【入門】Common Lisp その7【質問よろず】 >>951 (apply #'top3 args)
ほらよ (defmacro rm-parens-apply (f arg) (funcall (funcall ((lambda (x) (lambda (y) (lambda (z) `(,x ,@(funcall y z))))) f) 'symbol-value) arg)) (rm-parens-apply top3 args)
954 :
952 :2011/06/28(火) 02:50:50.03
>>951 ごめん、結果見直したら、希望と違ってた。
>>953 変数名にx,y,zという無意味なものを使うな。あと改行入れろ。
(defmacro rm-parens-apply(top3 args)(funcall
(funcall(funcall(lambda(top3)(lambda(symbol-value)
(lambda(args)`(,top3 ,@(funcall symbol-value args)))))top3)'symbol-value)args))
(rm-parens-apply top3 args)
956 :
951 :2011/06/28(火) 23:31:40.31
皆さんレスありがとうございます。なるほど、そうすれば良かったのですね。 変数名と改行に気をつけてこう仕上げました。 ( defmacro rm-parens-apply ( args top3 ) ( funcall ( funcall ( funcall ( lambda ( args ) ( lambda ( top3 ) ( lambda ( symbol-value )` (, symbol-value ,@ ( funcall args top3 ) ) ) ) )' symbol-value ) top3 ) args ) ) (defun top3 (a b c) (format nil "top3 is ~A, ~A, ~A" a b c)) (setq are 'grape args '('apple 'orange are)) (rm-parens-apply top3 args) ;=> "top3 is APPLE, ORANGE, GRAPE"
ワロタw
すまねぇ仙人の皆、俺には
>>956 がLispに見えない。
もっと別の、おぞましい何かにしか…
Lisper的にはPythonのブロックインデントは有り?無し?
オフサイドルールっぽいけど、全然違う所も評価高いな。
>>958 pass って書くのめんどいから ) がいい。
963 :
デフォルトの名無しさん :2011/06/30(木) 05:55:58.43
Linux Lispbox設定方法知ってる方いますか?
Lispboxって設定なんもいらんだろ?
965 :
デフォルトの名無しさん :2011/06/30(木) 06:20:43.51
↑うまく起動できないもので
>>965 ダウンロードした Lispbox はどれで
使っている Linux は何?
つーか、Linuxならパッケージマネージャで環境整わない?
わるいこといわん lisp cabinetにしとけ
そういうときは、行った操作とその結果(エラーメッセージなどの状況)を教えてくれないと、 誰も答えようがない。 ダウンロードした場所、インストールのときに行った操作、どうやって起動したか、 そしてその結果、どのようにうまく起動できなかったのか。例えば、エラーメッセージが出るとか、 エラーメッセージすら出ないとか、コアダンプするとか、そういった情報を書いてくれ。
969 :
デフォルトの名無しさん :2011/06/30(木) 07:01:01.18
Lispbox-0.7 Vine Linux4.1
Lisp CabinetってWindows専用じゃん。
971 :
デフォルトの名無しさん :2011/06/30(木) 07:18:43.97
ありがとうございました
Windowsでやっとけよ。
practical common lispのpdfっていつの間にか無料配布をやめちゃったんだね。
すいません…初心者なので質問させていただきます…。 リストの中の3つの要素が同じかそうでないかをくらべ、同じならその記号を違うならnilを返す関数hikakuを作成してください。 参考書の練習問題を解いていたのですが、わからなかったため質問させていただきました。 ヒントとしては3つのものが同じかどうか判定し、結果には最初のものを返せばよい。 との事ですが…どなたかご存じの方おりましたらよろしくお願い致します。 実行例としては (hikaku '(x x x)) →X (hikaku '(x y x)) →nil (hikaku '(x x nil)) →nil となっています…。 よろしくお願い致します。
(defun hikaku (list) (let ((x (car list))) (if (remove x list) nil x)))
(defun hikaku (x) (reduce (lambda (a b) (if (eql a b) a nil)) x))
突然失礼しますorz (setq board '((11 12 13) (21 22 23) (31 32 33))) といったものが与えられている時、 (11 21 31) を表わす関数xの定義 (12 22 32) を表わす関数yの定義 (13 23 33) を表わす関数zの定義 (11 22 33) を表わす関数aの定義 (31 22 13) を表わす関数bの定義
はどのようにして書けばよいのですか? appendなどでつなごうとしたのですが上手くいかず困っていますorz
宿題? a bはともかく、x y zはmapを使うんだと思うけど。
>>890 古い参考書に載ってた練習問題です…orz
解説を見ようとしたら中古品だったので解説部分が切り取られてましたT-T
とりあえず動作例が一つしか与えられてないわけだから、 xの仕様を日本語で書き下してみたら?
>>982 どのようにして(11 21 31)を取り出すのかさえ分かれば
解けると思うのですが…orz
初心者なので???状態です…。
>>983 まず、日本語で仕様を書き下す。
次に、それを実現するために必要な関数を調べる。
そして、仕様を言語で書き直す。
さあ、xの仕様を日本語で書き下してみよう。
初心者かどうか関係ない。問題を理解できたかどうかの問題。
関数xの仕様としては、carしてcarしたものとcdrしてcar したものとcdrしてcdrしてcarしたものをつなげばいいです。 ただその結合が上手くいきません…。
consはわかってる?
consとappendとlistの違いがよく分かってないのかね。 (defun list-copy-by-one-level (x) (cons (car x) (cdr x)) (defun list-copy-by-one-level (x) (append (list x) (cdr x)) はconsセルの消費数以外は同じ関数。 (defun list-copy-by-one-level (x) (nconc (list x) (cdr x)) ならconsセルの消費数も同じです。(pure functionalでなくなるが) x, y, zはこの関数のごく単純なバリエーションにすぎません。
>>985 >関数xの仕様としては、carしてcarしたものとcdrしてcar したものとcdrしてcdrしてcarしたものをつなげばいいです。
処理系あるなら一回試してみ
あるいはboardをconsだけで書いてみるといいよ
誰ぞ次スレを
>>946 Hunchentoot
そんなに使われてる?
スレが立ってから15か月になるのか...
>>990 とりあえず、私的に実験的なページだとHunchentootつかうかな
parenscriptあたりもlispのりで書けるし...
>>990 元のレスは「Hunchentootで普通にスレッド使いまくり」って意味だけど、
Hunchentoot自体も普通に使われてると思うよ。
だって、まともにメンテされてんのがHunchentootくらいだし。
cl-lexの使い方の例ってどこかにないのでしょうか
お疲れさまでした うめ
ぼんやり読んでたら
>>991 をスレが立ってから15年と読んで混乱した
ともあれ乙
>>990 以前はプロトタイプのweb作るのに使ってた(あと管理系のwebツール)
いまはclojure+compojureの方が書きやすいと思うようになっちゃった
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。