- 【Lisp】プログラミング言語 Clojure #3【JVM】
581 :デフォルトの名無しさん[sage]:2014/09/13(土) 00:24:34.54 ID:0gDmFCxq - リストやシーケンスじゃなくて、対が欲しいのですが、どうすればよいでしょうか
代用するのはよいですが、できるだけ一般的に行われている方法を知りたいです
|
- 【Lisp】プログラミング言語 Clojure #3【JVM】
584 :デフォルトの名無しさん[sage]:2014/09/13(土) 01:06:48.06 ID:0gDmFCxq - >>583
(pair 1 2) が()やnilから構成されるリストやベクタではなく、 (pair 1 ()) が '(1) と同値になるような pair が欲しいです lisp の . や、 prologの | みたいな演算子です ゆにふぃケーションのプログラムを作っていて、 (1 2 3 4) を (pair x y) にマッチさせたときに、(y . ()) と (2 . (3 . (4 . ())) ではなく、 y と (2 . (3 . (4 . ())) 全部をマッチさせたいのですが、 ()から構成したときだけリストと同値になる対やタプルがないとかなり面倒なことになりそうです
|
- 【Lisp】プログラミング言語 Clojure #3【JVM】
588 :デフォルトの名無しさん[sage]:2014/09/13(土) 09:11:59.83 ID:0gDmFCxq - すみません
(defn a [n] (if(<= n 0) 0 (b (- n 1)))) (defn b [n] (if (<= n 0) 0 (+ (a n) 1))) これ↑を test.clj に書いて (load "./test") や (load-file "./test.clj") を実行すると エラーになります b の位置を入れ替えて保存したあとにもう一回ロードするとエラーは消えます 2回目以降は、replを再起動するまではエラーはでません replを起動するたびにこれをやると面倒なのですが、みなさんはどうしてるのでしょうか
|
- 【Lisp】プログラミング言語 Clojure #3【JVM】
592 :デフォルトの名無しさん[sage]:2014/09/13(土) 17:10:16.96 ID:0gDmFCxq - やっぱり見づらいです
(def db7 (list (list (mlist "append" NIL "Ys" "Ys")) (list (mlist "append" (mcons "X" "Xs") "Ys" (mcons "X" "Zs")) (mlist "append" "Xs" "Ys" "Zs")))) (def q7 (list (mlist "append" "X" "Y" (range 1 7)))) user=> (prolog-test q7 db7) ((append.(X.(Y.((1.(2.(3.(4.(5.(6.mNIL)))))).mNIL))))) #{X Y} ans: ({X mNIL} {Y (1.(2.(3.(4.(5.(6.mNIL))))))}) ans: ({X (1.mNIL)} {Y (2.(3.(4.(5.(6.mNIL)))))}) ans: ({X (1.(2.mNIL))} {Y (3.(4.(5.(6.mNIL))))}) ans: ({X (1.(2.(3.mNIL)))} {Y (4.(5.(6.mNIL)))}) ans: ({X (1.(2.(3.(4.mNIL))))} {Y (5.(6.mNIL))}) ans: ({X (1.(2.(3.(4.(5.mNIL)))))} {Y (6.mNIL)}) ans: ({X (1.(2.(3.(4.(5.(6.mNIL))))))} {Y mNIL}) "end"
|