我想将以下OCaml类型(非平衡二叉树)转换为Common Lisp,但作为一个CL新手,我不知道如何使用动态语言来实现它。
type 'a tree =
Leaf
| Node of 'a * 'a tree * 'a tree
任何建议都表示赞赏!
答案 0 :(得分:9)
标准缺点是你的树节点,car是左子树,cdr是右边。
答案 1 :(得分:2)
Base Common Lisp没有区别的联合类型定义。
我使用CLOS取得了合理的成功:
(defclass tree () (data left right))
有关使用DEFCLASS的详细信息,请参阅http://www.gigamonkeys.com/book/object-reorientation-classes.html。
更节省内存的方法是使用DEFSTRUCT而不是DEFCLASS。