【入門】Common Lisp その3【質問よろず】

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2008/01/11(金) 07:20:18
>>951
Lispboxというすぐ使える環境をダウンロードしてみたら?
953デフォルトの名無しさん:2008/01/13(日) 16:46:22
S式のインデントに応じて振る舞いを変えられるような
マクロってかけませんか?
954デフォルトの名無しさん:2008/01/13(日) 17:16:20
マクロじゃなくてリーダーの方に細工するんじゃダメなの?
955デフォルトの名無しさん:2008/01/13(日) 18:45:19
>>954
どんな形でもOKです
956デフォルトの名無しさん:2008/01/13(日) 19:11:57
>>7のリンクのどこだかにpython見たいな事をリーダマクロで実行させてみるって記事が有ったと思うのだけどちょっと失念。
957デフォルトの名無しさん:2008/01/13(日) 20:55:53
これかな?最高にキモい(良い意味で)w
ttp://lispuser.net/memo/lisp/2006-03-30-23-58.html
958デフォルトの名無しさん:2008/01/17(木) 12:07:02
"(a b c d e f)"このような文字列を読み込んで
リスト構造として取り込むためには
(eval "(a b c d e f)")
ってやればいいんですよね?
(mapcar #'(lambda (x) (format t "~A~%" x)) (eval "(a b c d e f)"))
こうやってもエラーが出るのですがどうすればいいでしょうか?
959デフォルトの名無しさん:2008/01/17(木) 13:57:18
>>958
(read-from-string "(a b c d e f)")
960デフォルトの名無しさん:2008/01/17(木) 22:30:08
>>958
普通の言語だと eval しかないけど、>>959 が既に書いている
read があるのが lisp の大きな特徴だよ。
961デフォルトの名無しさん:2008/01/17(木) 22:43:56
macroexpandもね。
962デフォルトの名無しさん:2008/01/18(金) 00:19:10
>>960
そういう eval のある「普通の言語」って何?
963デフォルトの名無しさん:2008/01/18(金) 00:39:55
>>962
Rubyとか
964デフォルトの名無しさん:2008/01/18(金) 00:41:15
そうなんだ。知らんかった。
965デフォルトの名無しさん:2008/01/18(金) 01:10:15
色々なeval関数の例。いわゆるLLの有名所が揃っているね。
http://ja.wikipedia.org/wiki/Eval
966デフォルトの名無しさん:2008/01/20(日) 11:06:44
(A B C D E F G)
のようなリストをドット表記として再出力させるにはどうしたらよいのでしょうか?
967デフォルトの名無しさん:2008/01/20(日) 11:33:19
>>966
どんな出力を期待している?
968デフォルトの名無しさん:2008/01/20(日) 13:12:20
>>966
(defun print-dot (s)
(cond ((consp s)
(princ "(")
(print-dot (car s))
(princ " . ")
(print-dot (cdr s))
(princ ")"))
(t (prin1 s))))
969デフォルトの名無しさん:2008/01/21(月) 02:05:25
>>965
Lispについての記述はちょっと変だな。
Lispを知らない人が書いたっぽい。
970デフォルトの名無しさん:2008/01/22(火) 03:28:39
Lisp知ってる人が興味持たないところって琴田
971デフォルトの名無しさん:2008/01/22(火) 12:55:44
よくfooというのを見るのですが、
このfooというのはどこから来ているのですか?
972デフォルトの名無しさん:2008/01/22(火) 13:08:10
>>971
第二次世界大戦中の兵士たちのスラング
FUBAR "Fucked Up Beyond All Repair"(何もかもしっちゃかめっちゃか)  の最初のFUがfooになって
そこから着てるのではないか...という説がRFCに乗ってたような...
973デフォルトの名無しさん:2008/01/22(火) 14:28:59
これね(日本語訳)
ttp://www.puni.net/~mimori/rfc/rfc3092.txt
ttp://www.dourish.com/goodies/jargon.html から引用
FOO 1. [from Yiddish "feh" or the Anglo-Saxon "fooey!"] interj. Term
of disgust. 2. [from FUBAR (Fucked Up Beyond All Recognition), from
WWII, often seen as FOOBAR] Name used for temporary programs, or
samples of three-letter names. Other similar words are BAR, BAZ
(Stanford corruption of BAR), and rarely RAG. These have been used in
Pogo as well. 3. Used very generally as a sample name for absolutely
anything. The old `Smokey Stover' comic strips often included the
word FOO, in particular on license plates of cars. MOBY FOO: See MOBY.
974デフォルトの名無しさん:2008/01/22(火) 14:30:23
975デフォルトの名無しさん:2008/01/22(火) 14:31:43
ttp://foldoc.org/index.cgi?foo
...と、これはJARGONの転記か。
976デフォルトの名無しさん:2008/01/23(水) 07:08:45
スレチだが便乗で hoge の起源も知りたい
977デフォルトの名無しさん:2008/01/23(水) 10:07:29
978デフォルトの名無しさん:2008/01/23(水) 10:24:10
hogeんな! hage!
みたいな使い方で合ってますかね?
979デフォルトの名無しさん:2008/01/23(水) 19:16:57
hoge でググった上位 2 つだが

ttp://d.hatena.ne.jp/keyword/hoge

メタ構文変数
ttp://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E6%A7%8B%E6%96%87%E5%A4%89%E6%95%B0
が解り易いだろう。
どっちも
ttp://kmaebashi.com/programmer/hoge.html
ここに行き着くけどな
980デフォルトの名無しさん:2008/01/23(水) 19:19:54
ttp://ja.wikipedia.org/wiki/Hoge がリダイレクトされる件
981デフォルトの名無しさん:2008/01/24(木) 21:41:47
GCLのコンパイル時について質問させてください。

(defun foo ( )
(if (終了条件)
finish
(progn (・・・) (・・・) (foo))))

以上のように、prognの最後に再帰呼び出しを持ってきた関数を作った場合、
末尾再帰として認識され、gccでコンパイル後にループになるのでしょうか?
982デフォルトの名無しさん:2008/01/24(木) 21:56:57
高い最適化レベルを指定すればループになるよ
983デフォルトの名無しさん:2008/01/24(木) 22:47:07
>>982
回答ありがとうございます。

高い最適化レベルというのは、
(declaim (optimize (speed 3)))
を宣言すればいいのかな。
間違っていたら指摘お願いします。
984デフォルトの名無しさん:2008/01/24(木) 22:53:19
>>983
そうそう。そんな感じ。
985デフォルトの名無しさん:2008/01/24(木) 22:58:12
>>984
ありがとうございます。
悩んでいたところなので、非常に助かりました。
986デフォルトの名無しさん:2008/01/26(土) 10:50:47
((lambda (x) (1+ x) 1)とか、先頭にlambda式が来るときってどうのように処理しているのですか?
987デフォルトの名無しさん:2008/01/26(土) 10:52:54
その lambda 式に引数渡して使ってるだけじゃね
988デフォルトの名無しさん:2008/01/26(土) 11:21:18
lambdaを他のシンボルに変えたいんですが・・・
989デフォルトの名無しさん:2008/01/26(土) 14:25:11
何をしたいかよりも、何故そうしたいかを述べるほうが的確なアドバイスが得られますよ
990デフォルトの名無しさん:2008/01/26(土) 21:17:03
>>986
他の言語なら処理系のソースコード修正するぐらい大変だぞ
判ってんのか?
LISPならマクロでできまちゅね〜よかったでちゅ
991デフォルトの名無しさん:2008/01/27(日) 00:01:36
>>990
ん?
lambda form は特別扱いだから <http://www.lispworks.com/documentation/HyperSpec/Body/03_ababd.htm>
たとえば
(defmacro λ (arg &body body) `(lambda ,arg ,@body))
としても
((λ (x) (* x x)) 10)
とはできないよ。
992デフォルトの名無しさん:2008/01/27(日) 07:40:46
>>988
リードマクロで妥協
(set-macro-character #\\
#'(lambda (strm char)
(cons 'lambda (read strm t nil t))))
993デフォルトの名無しさん:2008/01/27(日) 09:24:06
あーそっか。
CommonLispには*太古の呪い*が掛かってるんだよね:-)
994デフォルトの名無しさん:2008/01/27(日) 09:28:41
read-lineで読んできた文字列をリストにいれようとしてるんだけど
CPU100%になって終わるんだよね

(append リスト (リードラインうんたらかんたら))
これって禁則的な書き方なのか?
995デフォルトの名無しさん:2008/01/27(日) 10:21:19
うんたらかんたらがあやしい
996デフォルトの名無しさん:2008/01/27(日) 10:23:19
(while (append c (read-line in nil))
こんな感じ
lispの勉強全然進まない
997デフォルトの名無しさん:2008/01/27(日) 10:40:26
Append じゃなくて cons 使って最後に nreverse する.
今のだと O(N^2).
998デフォルトの名無しさん:2008/01/27(日) 11:36:34
>>993わざわざCLスレまで来て煽るのはちょっと恥ずかしいぞ。素直にScheme使えば?
999デフォルトの名無しさん:2008/01/27(日) 11:54:22
次スレのURL↓
1000LISPは死ぬ:2008/01/27(日) 12:00:28
             ,ィミ,        ,ィミ,               フ
              彡 ミ        彡 ミ,            ヤ |
           ,,彡   ミ、、、、、、、、彡  ミ,     (⌒)    レ  |   
          彡;:;:             ミ,    (  ヽ   ヤ
       〜三;:;:::::              彡〜  ノ  ノ   レ
       ~~三:;:;:;:::::  -=・=-   -=・=- 三~~ ヽ (    :     ;;
       ~~彡::;:;:;:;:::..     ___     ,三~~ ( ノ ,,,,,  :      ;;
        ~~彡;:;:;:;:;:;:;:.    |┴┴|    ,ミ~~ ノノ ;'" ,,ノ―、     ,;'
        ~~彡:;:;:;:;:;:;:;:;.  ノ――| ---==ニノ ,;'′ >=ニ(二二二()
   ,...-''''""~~,::;:;::;::;::;::;'            ミ,,  ,;'′  ゝ--〈
__,;";;:;;;;;;;;;;;;;;;;;;;;;:;:;:;:;:;:;:;            i! ミ,,,,;'′   `ー‐'
         ::::ミミミ:;:;:;:           ミ::      ,;' ̄ ̄ ̄ ̄|  \___/
          :::::ミミミ:;:;:           ミ:::,   ,;::''′        |.    \/
          ::::ミミミ:;:;::       ,;+''"~~゙+、~'''''~          |     |
           ::::ミミミ:;:;:;:     ,+'"     ミ:::::           |   ━┷━━━┳━━━━━
             :::::ミミミ:;:;:;:;:  >':;:       ミ::              |             ┃
           ::::::ミミミ:;:;:;:;:;../;:;:;:       ;:"             |             ┃
            ::::::::ミミミミ:;:/;:;:;:;:    ,.+'"''-、________|__         ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄;':;:;:;:   ,.+'"    ミ、             l         ┃
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。