次のOCaml型(不均衡なバイナリツリー)をCommon Lispに変換したいのですが、CL初心者の方は、動的言語を使用してそれを行う方法はわかりません。CLを使って木を表現する方法は?
type 'a tree =
Leaf
| Node of 'a * 'a tree * 'a tree
ご了承ください。
次のOCaml型(不均衡なバイナリツリー)をCommon Lispに変換したいのですが、CL初心者の方は、動的言語を使用してそれを行う方法はわかりません。CLを使って木を表現する方法は?
type 'a tree =
Leaf
| Node of 'a * 'a tree * 'a tree
ご了承ください。
標準のconsはツリーノードです(carは左側のサブツリー、cdrは右側です)。
詳細については、http://nostoc.stanford.edu/jeff/llisp/13.htmlを参照してください。
ベースコモンLispには、区別されたユニオンタイプの定義がありません。
(defclass tree() (data left right))
がDEFCLASSを使用しての詳細については、http://www.gigamonkeys.com/book/object-reorientation-classes.htmlを参照してください:
私はCLOSを使用して、合理的な成功を発見しました。
より効率的なアプローチは、DEFCLASSではなくDEFSTRUCTを使用することです。