1 名前:デフォルトの名無しさん mailto:sage [04/02/01 19:10] 過去スレ Part1: piza2.2ch.net/tech/kako/987/987169286.html Part2: pc.2ch.net/test/read.cgi/tech/1002584344/ Part3: pc.2ch.net/test/read.cgi/tech/1008220265/ Part4: pc.2ch.net/test/read.cgi/tech/1016211619/ Part5: pc3.2ch.net/test/read.cgi/tech/1023091882/ Part6: pc3.2ch.net/test/read.cgi/tech/1031560687/ Part7: ruku.qp.tc/dat2ch/0311/20/1042167213.html Part8: pc2.2ch.net/test/read.cgi/tech/1058263391/ Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/ 前、"Schemeスレはあるのになんでcommonlispスレはないの?"とか言って別のスレを建てた大馬鹿者がいたので、 標題にCommonLispと付けておきました。 Lispの話題でCommonLisp,Scheme,EmacsLisp(専用スレッドがある)以外のものが出ることはこのスレの歴史上でも 稀なので問題はほとんどないかと思います。 関連リンクは>>2-10 あたり
357 名前:デフォルトの名無しさん mailto:sage [04/03/19 14:42] The Seasoned Schemerってどうかな。安いから買おうかな。littleは持ってるんだけど。 www.amazon.co.jp/exec/obidos/ASIN/026256100X/249-6997664-7938729 と思ったら、The Little Mler などというもっと面白そうな本が...
358 名前:デフォルトの名無しさん [04/03/22 14:37] Lispがそんなにすごいなら ---If Lisp Is So Great--- www.shiro.dreamhost.com/scheme/trans/iflisp-j.html
359 名前:デフォルトの名無しさん mailto:sage [04/03/22 18:54] JavaとかC++とか手続き型で一般的なオブジェクトの メソッド呼び出し形式が書ける様になれば普及すると思うんだけど、 どうかな。 シングルメソッドディスパッチでいいし。 つまりこういうこと (object.method param) ;; object->method(param) (object->method param) ;; object->method(param) (setf object->prop value) ;; object->prop = value .と->はどっちでもいいけど。.はdot-pairと被るから->かな。 マクロ文字でなんとかなったりする? でもメソッド呼び出しをネストさせると ((object->method param1)->method param2) ;; object->method(param1)->method(param2) 変な違和感がある。 そもそも->はsuffix演算子だから、本来ならLISP流に書くと (-> (-> object method param1) method param2) こうなる。 でもこれじゃ使う人いないだろう。 まいった。
360 名前:デフォルトの名無しさん mailto:sage [04/03/22 23:11] >>358 >(だが、気をつけ給え。その論理の行き着く先はWindowsだ。) ワロタ 広まるのが悪いみたいな言い方だな(w
361 名前:デフォルトの名無しさん mailto:sage [04/03/23 00:06] >>359 . や -> は繋ぎの役割しかしてないから、括弧と両方あるのは冗長。省こう。 object と getter や method の順序は、lisp だと procedure が前だから、 (setf (prop obj) value) と ((method obj) param) あと方のは中の括弧はなくてもいいか。そうすると、(method obj param)。 あれ、両方とも今のままだ。
362 名前:デフォルトの名無しさん mailto:sage [04/03/23 00:18] (だが、気をつけ給え。その論理の行き着く先はloopだ。)
363 名前:デフォルトの名無しさん mailto:sage [04/03/23 09:28] loop keywordをリスト中にいきなり出てくるキーワードではなくて、ローカルマクロ みたいに見えるように定義したら、loop嫌いな人も減ったかな。 (loop (for item in list) (collect item))
364 名前:デフォルトの名無しさん [04/03/23 10:22] > (* 1.05 12) 12.600000000000001 > (* 1.05 12.0) 12.600000000000001 Gaucheでこの誤差をなくす方法を教えてください。 (プログラム初心者板ものですね。申し訳ないです)
365 名前:デフォルトの名無しさん mailto:sage [04/03/23 11:13] そんなもの (* 105/100 12) とすれば、、、 12.600000000000001 あれ???
366 名前:デフォルトの名無しさん mailto:sage [04/03/23 11:22] 浮動小数点の仕様。 十進数使え。Gaucheにあるかどうかはしらんが。
367 名前:デフォルトの名無しさん mailto:sage [04/03/23 11:24] gaucheはexact rationalないみたいだからね。 formatで桁指定できれば助かるんだが。
368 名前:デフォルトの名無しさん mailto:sage [04/03/23 11:24] clisp なら (* 105/100 12) => 63/5 でウマー!! というは置いといてだ, #include <stdio.h> int main(int argc, char *argv[]) { double f = 1.05*12; printf("%f\n", f); printf("%.14f\n", f); printf("%.15f\n", f); printf("%.16f\n", f); return 0; } の結果が 12.600000 12.60000000000000 12.600000000000001 12.6000000000000014 になる事について,どう思う?
369 名前:デフォルトの名無しさん mailto:sage [04/03/23 11:38] What Every Computer Scientist Should Know About Floating-Point Arithmetic docs.sun.com/source/806-3568/ncg_goldberg.html 日本語訳は腐っていた記憶あり。 他にも浮動小数点数の入門文書あったら紹介してください。
370 名前:デフォルトの名無しさん mailto:sage [04/03/23 12:08] IEEE double precision floating pointで、 1.05の最良近似は丸めが入って (* #x10cccccccccccd (expt 2 -52))。 仮数部を12倍すると #xc999999999999c。 これは54bitになるから、仮数部53bitに収めるにはまた丸めなくちゃ ならない。ちょうど中間の値に来るときは仮数部が偶数になるように 丸めるから、演算結果はこうなる。 (* #xc99999999999a0 (expt 2 -52)) 一方、12.6, 12.600000000000001の最良近似は、桁を揃えればそれぞれ: (* #xc9999999999998 (expt t -52)) (* #xc99999999999a0 (expt t -52)) だもんで、正確さを言うなら12.600000000000001の方が正確やね。 見にくいことは否定しないが。
371 名前:デフォルトの名無しさん mailto:sage [04/03/23 22:09] >>364 gosh> (* 1.05 1.2 10) 12.6
372 名前:デフォルトの名無しさん mailto:sage [04/03/24 02:59] >>359 (obj 'msg args) という形で Smalltalk のメッセージ式風に記述するとか。 キーワード引数付きのメッセージ式って Lisp 等の関数呼び出し式と同様に 一貫した記述(条件分岐とか、繰り返しとかもメッセージ式風に記述出来る) が出来て、尚かつ読み易くて イイ! と思うんだけどどうかな?
373 名前:デフォルトの名無しさん mailto:sage [04/03/24 03:27] >>359 ,372 そんな簡単なことで普及するなら Dylan はとっくの昔にメジャーになっとるがな。 要するに、マクロで書式を自由にできることがウリの LISP で駄目だってことは、 (なにが駄目だかわらかんが)問題は(あるとすれば)書式にあるんじゃないっ てことなんだよ。(で、なにが駄目で問題なんだ…?藁)
374 名前:デフォルトの名無しさん mailto:sage [04/03/24 05:55] 他の言語で満足してるからじゃないの?
375 名前:デフォルトの名無しさん mailto:sage [04/03/24 07:24] 足りないこと ・(すでに)C/C++言語並みに広まっていること ・C/C++のようにどこでも動くこと(最近のPCでも、組み込み機器でも)
376 名前:デフォルトの名無しさん mailto:sage [04/03/24 09:17] それは言語が普及する原因ではなく、結果ですよ
377 名前:デフォルトの名無しさん mailto:sage [04/03/24 09:51] >>373 お前、括弧の使い方が下手だな。 その文章、激しく読みにくいぞ。
378 名前:デフォルトの名無しさん mailto:sage [04/03/24 10:49] >>376 分からないかな。 "普及すれば普及する"というロジックが。 最初の出発点は些細なことでしょ。(Lispは重すぎたとか)
379 名前:デフォルトの名無しさん mailto:sage [04/03/24 11:13] >>378 言いたいことは、分かるよ。原因と結果が循環するということね。 ただそれは、ある言語が普及しだして、一応、人気が軌道にのってからの話しでしょ。 >最初の出発点は些細なことでしょ。 最初の一撃ってけっこう大切なことでしょ。それが些細なことであっても。
380 名前:デフォルトの名無しさん mailto:sage [04/03/24 11:17] しかし、今となってはLispが重いとか言っている年寄りは、そろそろ引退してくれる頃だよね。
381 名前:デフォルトの名無しさん mailto:sage [04/03/24 13:07] (だが、気をつけ給え。その論理の行き着く先はIf Lisp Is So Greatだ。)
382 名前:デフォルトの名無しさん mailto:sage [04/03/24 22:57] >>380 いいから、携帯でLisp動かしてみろ。GBAでもいいよ。 PCとかワークステーション以外は、始める前から年寄り引退確定か
383 名前:デフォルトの名無しさん mailto:sage [04/03/24 23:07] 多分動かすだけなら難しくはないな >382 は自分でLisp処理系を作ったことがないのか?
384 名前:デフォルトの名無しさん mailto:sage [04/03/25 00:42] 動かすだけなら難しくないと思う。 >382 はILC2003で絶賛された湯浅センセのXSでも勉強すれ。 hxxp://www.xslisp.com/
385 名前:デフォルトの名無しさん mailto:sage [04/03/25 06:45] ・動かすだけなら難しくない ・処理系作れ 馬鹿の一つ覚えですか? Cだったらすでにコンパイラがあったりするわけですよ。 お前らは、新しい環境が着たらそのたびに、コンパイラ作ってるのかと小一時間・・・ もう、Lisperとやりあうのは疲れた
386 名前:デフォルトの名無しさん mailto:sage [04/03/25 07:43] 「新しい環境」が来たらそのたびに、 C だって移植作業してるんじゃないかな。 「新しい環境」を作った人達が一緒に開発するかもしれないけど。 「すでに」あるかどうかは、その環境と言語がどれだけ普及してるかって話でしかないと思う。
387 名前:デフォルトの名無しさん mailto:sage [04/03/25 08:58] >>382 > いいから、携帯でLisp動かしてみろ。GBAでもいいよ。 たしか、LispMeという処理系がPalm PilotというPDAで動いていたな。 携帯とかGBAとかでも、開発環境が入手しやすければ、だれかが動かしても おかしくないね。LispといってもCommon Lispのようにライブラリ的な機能が 豊富にそろっている言語から、Schemeみたいに山椒は小粒で…みたいなものまで 色々あるんだよ。 >>385 >Cだったらすでにコンパイラがあったりするわけですよ。 たしかに最初から使えれば便利だね。Cでそのままプログラミングするか、 Lispのようなもう少し抽象化が行われた言語を実装してから作業するか、 そのコストの見積りだろうね。 >お前らは、新しい環境が着たらそのたびに、コンパイラ作ってるのかと小一時間・・・ だれかが作業をやってくれていなければ、自分でやるか、人にやってもらうしかないでしょう。 それは、Cでも変わらないよ。ただCとLispの守備範囲はあまり、かぶらないと思うけど。
388 名前:デフォルトの名無しさん mailto:sage [04/03/25 09:17] 最近は組み込み用途にも、C++やJavaを使う事があるらしいね。ここらへんならLispとかぶるかね。
389 名前:デフォルトの名無しさん mailto:sage [04/03/25 10:21] >>385 ならバックエンドにはすでにある C コンパイラを利用するような 拡張をするという手もあるよ.C のソースを出力すりゃいいわけで 仲良くやってけるじゃん.なんで勝手に対決姿勢になってんの?
390 名前:デフォルトの名無しさん mailto:sage [04/03/29 11:23] 390 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25(木) 23:04 そういやKCLはオブジェクト言語がCだったような。
391 名前:デフォルトの名無しさん mailto:sage [04/03/29 11:25] 391 名前:デフォルトの名無しさん[sage] 投稿日:04/03/25(木) 23:54 ターゲット用の専用言語(GC 無しとかね)を作るのも楽だな.S 式ベースで構文考 える手間が少ないし.C のソース出力でもアセンブラ出力でもバイナリ出力でも気合 いと時間に応じて自由に選べるし.
392 名前:デフォルトの名無しさん mailto:sage [04/03/30 23:28] 392 名前:デフォルトの名無しさん[sage] 投稿日:04/03/26(木) 23:54 あれ?誰もいない・・・
393 名前:デフォルトの名無しさん mailto:sage [04/03/31 13:39] 393 名前:デフォルトの名無しさん[sage] 投稿日:04/03/26(木) 23:59 ジリリリリリリリリーン
394 名前:デフォルトの名無しさん mailto:sage [04/03/31 22:48] 結局Schemeに戻ってきてしまった.
395 名前:デフォルトの名無しさん mailto:sage [04/04/01 05:12] slime のマニュアル。既出じゃなかったような気がするので一応。 ttp://www.bluetail.com/~luke/misc/lisp/slime.pdf
396 名前:デフォルトの名無しさん mailto:sage [04/04/01 05:18] slime のマニュアル。既出じゃなかった気がするので一応。 ttp://www.bluetail.com/~luke/misc/lisp/slime.pdf
397 名前:デフォルトの名無しさん mailto:sage [04/04/02 11:25] slime のマニュアル。既出じゃない気がするので一応。 ttp://www.bluetail.com/~luke/misc/lisp/slime.pdf
398 名前:デフォルトの名無しさん mailto:sage [04/04/03 19:22] slime のマニュアル。既出でない気がするので一応。 ttp://www.bluetail.com/~luke/misc/lisp/slime.pdf
399 名前:デフォルトの名無しさん mailto:sage [04/04/03 21:15] (gc)
400 名前:デフォルトの名無しさん mailto:sage [04/04/04 03:16] 荒らし?
401 名前:デフォルトの名無しさん mailto:sage [04/04/04 13:04] ('A`)
402 名前:デフォルトの名無しさん mailto:sage [04/04/04 22:56] 「警察だ。ドンドンドン。開けろ。荒しの容疑で逮捕する。開けなさい。」 「ふぁ〜(眠)け、けいさつ〜?」 「そうだ。警察だ。早く開けなさい。」 「け、けいさつ〜?ここは、けいさつじゃないよ〜。」 「ふざけるな。私は警察だぞ。いつまで寝たふりしてるんだ。早く開けろ。」 「ふぁ〜(眠)ね、ねた〜?ね、ねたなんて、ふってないよ〜」 「ネタ振りじゃないよ!寝たふりだよ!このやろう!無駄な抵抗は止めろ!」 「ね、ねたふり〜?こ、ここは、ネタスレじゃないよ〜。」 「ここはネタスレじゃないよ!ここをネタスレ化している荒らしはお前だろ!いいから開けろ!」 「あらし〜?」 「そうだ。容疑を認めるならさっさとここを開けなさい!」 「こ、ここは、ゲームセンターじゃないよ〜」 「俺はアラシじゃないよ!!お前が荒らしなんだよ!なんだよっゲームセンターって!!!炎のコマかよ!・・・」 「・・・」 「・・・」 (;´∀`)
403 名前:デフォルトの名無しさん mailto:sage [04/04/04 23:18] (;´∀`) nil
404 名前:デフォルトの名無しさん mailto:sage [04/04/05 23:01] >>403 うれピー!!! (;`∀`) 韮韮韮韮韮韮韮韮韮 韮韮韮韮韮韮韮韮韮 韮韮韮韮韮韮韮韮韮 韮韮韮韮韮韮韮韮韮
405 名前:デフォルトの名無しさん mailto:sage [04/04/05 23:28] 春爛漫
406 名前:デフォルトの名無しさん mailto:sage [04/04/06 00:34] >>405 >>春爛漫 1/2 なんちゃって!
407 名前:デフォルトの名無しさん mailto:sage [04/04/06 12:20] Kahua使ってる人いる? 感想聞かせて
408 名前:デフォルトの名無しさん [04/04/06 13:19] cmucl19a期待age
409 名前:デフォルトの名無しさん mailto:sage [04/04/06 13:28] cmuclの新しいCLOSで以下の式を評価すると何が返りますか? (class-name (class-of (class-of #'make-instance))) ちなみに、cmucl18eだとstandard-class、clisp 2.33だとbuilt-in-class ですが、MOP的には、funcallable-standard-classが正しい気がします。
410 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:09] 初心やスレからやってきました。 LISP初心者です。 ここのスレの皆様方に教えっていただきたいことがあるのですが、 WINDOWS版のCL-HTTPを落としたいのですが、MITのHPのダウンロード できそうなリンクがほとんどエラーになるのですが、CL-HTTPを ダウンロードするにはどうすればいいんでしょうか? よろしくお願いします。
411 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:41] ハァ
412 名前:デフォルトの名無しさん mailto:sage [04/04/09 18:44] 〃〃∩ _, ,_ ⊂⌒( `Д´) < WINDOWS版のCL-HTTPを落としたいよ〜! `ヽ_つ ⊂ノ ジタバタ
413 名前:デフォルトの名無しさん mailto:sage [04/04/09 20:23] >>409 [gcl 2.5.3] Error: The function CLASS-NAME is undefined. [ecl 0.9c] STANDARD-CLASS [sbcl 0.8.6] SB-PCL:FUNCALLABLE-STANDARD-CLASS
414 名前:デフォルトの名無しさん mailto:sage [04/04/10 08:40] やさしいLisp入門 ttp://www.cutt.co.jp/book/4-87783-102-9.html こんなもん出てるようだけど、どうなん?
415 名前:デフォルトの名無しさん mailto:sage [04/04/10 09:06] 4200円! たっか〜。 どうみても入門書でたいして面白そうな例題もないこの内容で、この値段。うーむ。
416 名前:デフォルトの名無しさん mailto:sage [04/04/10 09:10] CLOSどころかマクロのマの字もないな。
417 名前:デフォルトの名無しさん mailto:sage [04/04/10 15:34] ネタじゃないんだよね? 他のやさしいシリーズの倍近い値段は置いておくとして (ページ数も倍の480だし)、 よりによってCommonも何もついてないLISPとは、 いったいどういうことなのか。 読んでみないことには何とも言えないけど、 最終章にコンパイラとローダとリンカがあるということは、 やっぱりCommonLISPなのか。 日本のLISP業界にとって歴史的事件となるのかどうか。
418 名前:デフォルトの名無しさん mailto:sage [04/04/10 17:32] >>409 >(class-name (class-of (class-of #'make-instance))) LispWorksPersonalEditionで試してみると FUNCALLABLE-STANDARD-CLASS だね
419 名前:デフォルトの名無しさん mailto:sage [04/04/10 19:49] The Evolution of Language ttp://homepages.inf.ed.ac.uk/wadler/language.pdf
420 名前:デフォルトの名無しさん mailto:sage [04/04/10 20:37] >>417 > よりによってCommonも何もついてないLISPとは、 > いったいどういうことなのか。 書店で立ち読みしたところ第一章にCommon Lispと明記してあったのだが。 何を見当違いのことで騒いでいるのかね。
421 名前:デフォルトの名無しさん mailto:sage [04/04/10 20:47] >>420 内容はどうだったの?
422 名前:デフォルトの名無しさん mailto:sage [04/04/10 23:52] >>409 手元ではこんなんですが. CMU Common Lisp pre19a 20040410, running on lavie With core: /home/lambda/local/lib/cmucl/lib/lisp.core Dumped on: Sat, 2004-04-10 11:20:09+09:00 on lavie See <www.cons.org/cmucl/> for support information. Loaded subsystems: Python 1.1, target Intel x86 CLOS based on Gerd's PCL 2004/01/09 04:34:17 * (class-name (class-of (class-of #'make-instance))) PCL:FUNCALLABLE-STANDARD-CLASS *
423 名前:409 mailto:sage [04/04/11 16:59] 情報を頂いたみなさん、ありがとうございました。 FUNCALLABLE-STANDARD-CLASSの方が、MOP的に「正しい」とまでは言えないかもしれないけど、 「そのほうが自然」とは言えるかな? clispの開発者の人が1、2年前にMLで、「FUNCALLABLE-STANDARD-CLASSをサポートしないの?」と 尋ねられて、「自分で書いても同じような事を手軽にできるし、ANSI規格でもないから、今のところ 作業予定はないよ」と言っていました。
424 名前:デフォルトの名無しさん mailto:sage [04/04/15 22:32] >>423 ACL がでてないみたいなので一応書いておく。 CL-USER(1): (class-name (class-of (class-of #'make-instance))) ACLMOP:FUNCALLABLE-STANDARD-CLASS ACL 6.2 にて。
425 名前:デフォルトの名無しさん [04/04/17 19:19] scheme age
426 名前:デフォルトの名無しさん mailto:sage [04/04/18 12:35] xyzzyでLispをやり始めたんですが (- 1) はなぜ-1になるのでしょうか? 引数が一つの時は引数に-を付けて返す、というのが関数として定義されてるから という理解でいいのでしょうか?
427 名前:デフォルトの名無しさん mailto:sage [04/04/18 12:40] >引数が一つの時は引数に-を付けて返す、というのが関数として定義されてるから >という理解でいいのでしょうか? いいです。 Function `-' www.lispworks.com/reference/HyperSpec/Body/f__.htm > If only one number is supplied, the negation of that number is returned.
428 名前:デフォルトの名無しさん mailto:sage [04/04/18 12:54] >>427 関数定義されてるから、という理解でよかったみたいですね。 どうもでした。
429 名前:デフォルトの名無しさん mailto:sage [04/04/18 13:01] (*) は1 (+) は0
430 名前:デフォルトの名無しさん mailto:sage [04/04/18 13:10] >>428 -を付けて返すと、the negation of that number is returned は全然違うぞ
431 名前:デフォルトの名無しさん mailto:sage [04/04/18 13:13] 428さんじゃないけど、具体的に結果が違ってくる例みたいなものを教えていただけますか?
432 名前:428 mailto:sage [04/04/18 13:21] >>430 その数の否定を返す→正負反転して返す、という理解ではどうしてダメなんでしょうか?
433 名前:デフォルトの名無しさん mailto:sage [04/04/18 17:29] negateは正負反転の意味で普通に使われてるし、 the negation of taht number は正負反転した数のこと。 negative numberというぐらいだから、負は正の「反対」だと 自然に思っているのだろうね。
434 名前:デフォルトの名無しさん mailto:sage [04/04/18 19:07] >>432 「-を付けて返す」と「正負反転して返す」は全然違うぞ
435 名前:デフォルトの名無しさん mailto:sage [04/04/18 19:40] だから馬鹿みたいに違う違うって言わずに431が言ってるみたいに例をもってくるとか 何が、どう違うかいいなよ。
436 名前:デフォルトの名無しさん mailto:sage [04/04/19 00:26] つまり430=434がこれから始めたい事とは、 「-を付けて返す」という言い回しに対しての、 無益な重箱の隅を突く日本語講釈ですか? (最近、関数型関連スレはこの手の変な人が増えて悲しいですね。) ところで、 (- -1) この式は何が返ると思いますか?
437 名前:デフォルトの名無しさん mailto:sage [04/04/19 07:02] -を90度回転させてから前につけて +1
438 名前:デフォルトの名無しさん mailto:sage [04/04/19 08:20] 予想1:絶対値の符号反転したもの。 (- -1) => -1 予想2:文字通り (- -1) => "--1"
439 名前:デフォルトの名無しさん mailto:sage [04/04/19 08:43] >(- -1) >この式は何が返ると思いますか? >予想2:文字通り (- -1) => "--1" 字面レベルでの議論だとは気がつきませんでした。 複素数の場合かなとも想像していました。
440 名前:デフォルトの名無しさん mailto:sage [04/04/19 11:43] (- -1) => (^_^) ('A`) => (-_-) (゚д゚) => (゚∀゚) (* ゚▽゚) => ゚▽゚
441 名前:デフォルトの名無しさん mailto:sage [04/04/19 21:25] バッククォートって、list や cons で書いたのと等価じゃないんですか? なんだか処理系によって値が違うんですが。 (defun bq (x) `(,x nil)) (defun ls (x) (list x nil)) (let ((l nil) (m nil)) (push (bq 1) l) (push (bq 2) l) (push (bq 3) l) (rplaca (cdar l) t) (print l) (push (ls 1) m) (push (ls 2) m) (push (ls 3) m) (rplaca (cdar m) t) (print m)) を評価すると、clisp では ((3 T) (2 NIL) (1 NIL)) ((3 T) (2 NIL) (1 NIL)) となるんですが、CMUCLでは ((3 T) (2 T) (1 T)) ((3 T) (2 NIL) (1 NIL)) と異なる結果になるんです。言語仕様上どっちが正しいんでしょうか?
442 名前:デフォルトの名無しさん mailto:sage [04/04/20 03:50] >>441 このへんかな Once again, it is emphasized that an implementation is free to interpret a backquoted form as any form that, when evaluated, will produce a result that is equal to the result implied by the above definition. In particular, no guarantees are made as to whether the constructed copy of the template will or will not share list structure with the template itself. cltl2 22.1.3. Macro Characters
443 名前:デフォルトの名無しさん mailto:sage [04/04/20 08:05] Common Lisp Hyperspec 2.4.6 Backquote www.lispworks.com/reference/HyperSpec/Body/02_df.htm によると、`(,x nil) = (append (list x) (list 'nil)) = (list x nil) となり、さらに、side-effectについて、 >An implementation is free to interpret a backquoted form F1 as any form F2 that, >when evaluated, will produce a result that is the same under equal as the result >implied by the above definition, provided that the side-effect behavior of >the substitute form F2 is also consistent with the description given above. になるから、cmuclは間違いの気がする。 ... share list structure ... のくだりは、backquoted formからreaderが作るform自体が templateと相似構造なformである必要はないと言っているのであって、template自体を構成する consを共有して使いまわしていいと言っているわけではないと思う。
444 名前:デフォルトの名無しさん mailto:sage [04/04/20 10:33] バッククォートの解釈は、結果が(equalの意味で)等しければ実装は自由。 `(,x nil) は次の何れにも解釈できる。 (append (list x) (list 'nil) 'nil) (append (list x) (list 'nil)) (append (list x) '(nil)) (cons x '(nil)) (cons x (list 'nil)) ... etc したがって、規格ではどちらも正しい。 side-effectはこの場合関係ない。
445 名前:443 mailto:sage [04/04/20 11:32] >>444 了解。規格の例をもっと読むべきでした。 最初は、俺もquoteの一種だから変更するべきじゃないと、 正しく解釈していたんですが規格を誤読して解釈を変えてしまいました。 書き直さなきゃならないコードがあるな。ありがとう。 この場合、cmuclは以下のような事をやって、consしないようにしていると いうわけね。 (let ((list (list nil nil))) (defun bq (x) (setf (car list) x) list))
446 名前:デフォルトの名無しさん mailto:sage [04/04/20 12:24] >この場合、cmuclは以下のような事をやって、consしないようにしていると >いうわけね。 例が間違っていました。忘れてください。
447 名前:441 mailto:sage [04/04/20 12:56] トップレベルのリストも全て cons とは限らないというわけですね。 (defun bq1 (x) `(,x 1 2)) (defun bq2 (x) `(,x 1 2 ,x)) (let ((l nil) (m nil)) (push (bq1 0) l) (push (bq1 0) l) (rplaca (cdar l) 3) (print l) (push (bq2 0) m) (push (bq2 0) m) (rplaca (cdar m) 3) (print m)) を CMUCL で評価したら ((0 3 2) (0 3 2)) ((0 3 2 0) (0 1 2 0)) となりました。リストの末尾に定数リストが来ていると使い回されるようです。
448 名前:デフォルトの名無しさん mailto:sage [04/04/20 14:03] >リストの末尾に定数リストが来ていると使い回されるようです。 そうみたいですね。それで、その分、consする回数が減ってリソースの節約になり、 それは規格で許された動作であると。
449 名前:デフォルトの名無しさん mailto:sage [04/04/20 14:09] 一応貼っておく。Emacs Common Lisp。 www.lisp.se/emacs-cl/
450 名前:デフォルトの名無しさん mailto:sage [04/04/22 14:04] 外国でxyzzyのこと知っている人は、どれくらいいるのだろう?
451 名前:デフォルトの名無しさん mailto:sage [04/04/22 15:34] とりあえずぐぐってみてはどうか。
452 名前:デフォルトの名無しさん mailto:sage [04/04/22 18:08] Windows マインスウィーパーの隠しコマンドが xyzzy なんだけどなんか関連ってあんの?
453 名前:デフォルトの名無しさん mailto:sage [04/04/22 19:14] とりあえずぐぐってみてはどうか。
454 名前:デフォルトの名無しさん mailto:sage [04/04/23 07:34] foo bar
455 名前:デフォルトの名無しさん mailto:sage [04/04/23 07:41] >>452 魔法の呪文として「xyzzy」を使うことがあるみたい。出典知っている人いる? >>451 >とりあえずぐぐってみてはどうか。 googleで調べてみたけど、結果を絞りきれなかった。Emacs系エディタリストには記載が あったけど、情報は名前だけ。Common Lispのサブセットを搭載しているという情報はなし。
456 名前:デフォルトの名無しさん mailto:sage [04/04/23 16:55] ADVENT(初期のコンピュータゲーム)の魔法が出典。 Jargon Fileの ttp://www.catb.org/~esr/jargon/html/X/xyzzy.html を参照。
457 名前:デフォルトの名無しさん mailto:sage [04/04/26 16:31] すんません、cmucl19のソースを入手するにはどうしたらいいんですか? cmucl web siteの指示どおりanonymous cvsで入手しようとすると、 /home/anoncvs/CVS-cmucl: no such repository と言われて失敗します。