如何使用CL表示树?

问题描述:

我想将下面的OCaml类型(非平衡二叉树)转换为Common Lisp,但作为一个CL新手,我不知道如何使用动态语言来完成它。如何使用CL表示树?

type 'a tree = 
    Leaf 
    | Node of 'a * 'a tree * 'a tree 

任何建议表示赞赏!

标准缺点是你的树节点,车是左子树,右边是cdr。

有关更多信息,请参阅http://nostoc.stanford.edu/jeff/llisp/13.html

Base Common Lisp没有区分的联合类型定义。

我发现使用CLOS合理的成功:

(defclass tree() (data left right)) 

有关使用DEFCLASS更多信息,请参阅http://www.gigamonkeys.com/book/object-reorientation-classes.html

更高效的内存管理方法是使用DEFSTRUCT而不是DEFCLASS。