5

core.logicを試していますが、独自のカスタムデータ型がロジック式に参加できるようにしたいと考えています。

(deftype Expression [node vars]
  ....)

基本的に、これは数式ツリー内のノードを表し、ノードツリーと使用される非バインド変数のセットが含まれます。node定数、シンボル、または(Operator Expression Expression....)ツリーノードのいずれかです。core.logicを使用して数式を操作し、そのような式のサブツリーと照合できるようにしたいと思います。

可能であれば、どうすればこれを行うことができますか?

core.logicのソースコードから、拡張するのに適しているように見えるプロトコルがいくつかIUnifyTermsあることがわかりますが(たとえば、IReifyTermsなど)、これらすべてがどのように使用されるのか、そして実際にどのプロトコルが使用されるのかは完全には明確ではありません。拡張する必要があります。

4

1 に答える 1

1

core.logic は、カスタム型に拡張できるように設計されています。ただし、正確に何が必要かを知るにつれて、プロトコルが変更される可能性があるため、これは十分に文書化されていません. clojure.core.logic.nominalcore.logic をカスタム型に拡張するために何が必要かを把握するには、名前空間を調べる価値があります。

于 2013-03-29T14:12:12.740 に答える