如何用CL表达树?

时间:2012-01-15 00:53:48

标签: common-lisp

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

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

任何建议都表示赞赏!

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:2)

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

我使用CLOS取得了合理的成功:

(defclass tree () (data left right))  

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

更节省内存的方法是使用DEFSTRUCT而不是DEFCLASS。