如何使用CL表示树?
问题描述:
我想将下面的OCaml类型(非平衡二叉树)转换为Common Lisp,但作为一个CL新手,我不知道如何使用动态语言来完成它。如何使用CL表示树?
type 'a tree =
Leaf
| Node of 'a * 'a tree * 'a tree
任何建议表示赞赏!
答
Base Common Lisp没有区分的联合类型定义。
我发现使用CLOS合理的成功:
(defclass tree() (data left right))
有关使用DEFCLASS更多信息,请参阅http://www.gigamonkeys.com/book/object-reorientation-classes.html。
更高效的内存管理方法是使用DEFSTRUCT而不是DEFCLASS。