Clojureで自然数のレイジーシーケンスを定義するのは簡単です:(def N (iterate inc 0))
。当然、Clojureに(apply min N)
を使用してNの最小値を見つけるように頼むと、無限回帰で固まってしまいます。Clojureが最小の自然数であることをClojureに理解させるにはどうすればよいですか?
Nのデータ構造に(= 0 (min N))
という事実を「組み込む」方法はありますか?暗黙的に、は、増加関数inc
が厳密に増加しているので、これを知っています。 min
関数は、この知識を悪用する方法を知らず、その代わりに無理矢理解答しようとします。
このコードをプログラムでエンコードする方法はわかりません。私は、制約のような追加の構造を持つレイジーシーケンスを構築する方法を希望します&リレーション)。最適化の問題を解決するために、これらの制約を利用する方法も欲しい(シーケンスの最小値または最小値を見つけることなど)。
ネイティブClojureでこれを行う方法はありますか? Datomicはどうですか?
Datomicはどこに適合しますか?あなたはその特別な制約を保存しようとしていますか? – Jared314