1 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 10:22:53 ] 過去スレ Part14: pc8.2ch.net/test/read.cgi/tech/1132275726/ Part13: pc8.2ch.net/test/read.cgi/tech/1115901841/ Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/ Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/ Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/ Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/ Part8: pc5.2ch.net/tech/kako/1058/10582/1058263391.html Part7: pc5.2ch.net/tech/kako/1042/10421/1042167213.html Part6: pc3.2ch.net/tech/kako/1031/10315/1031560687.html Part5: pc3.2ch.net/tech/kako/1023/10230/1023091882.html Part4: pc.2ch.net/tech/kako/1016/10162/1016211619.html Part3: pc.2ch.net/tech/kako/1008/10082/1008220265.html Part2: pc.2ch.net/tech/kako/1002/10025/1002584344.html Part1: piza2.2ch.net/tech/kako/987/987169286.html
783 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:11:21 ] また宿題かよw
784 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:36:23 ] 途中まででいいのか。 必要十分条件は(ry
785 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:56:26 ] この続きはまた来週!
786 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:08:02 ] ご愛読ありがとうございました
787 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 16:09:59 ] >>784 先生の次回作にご期待ください
788 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 19:52:23 ] んじゃ宿題と関係のないところで。 >>782 のような関数だと、普通はeq?じゃなくてeqv?を使うんじゃないのかね。 eq?はオブジェクトのidentityを調べる以外に使わないでしょ。
789 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 20:44:05 ] >>788 (atom? t1)なんだから無問題
790 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 21:00:41 ] >>789 (eq? 1.0 1.0)
791 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:20:25 ] LispとPostScriptさえあれば私はハッピーになれる ttp://rikunabi-next.yahoo.co.jp/tech/docs/ct_s03600.jsp?p=000994 HHKの記事ですが。
792 名前:デフォルトの名無しさん [2007/01/30(火) 23:41:23 ] 結局要領のいいLISPの独り勝ちです。
793 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 23:44:20 ] forthじゃないところが泣ける……
794 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 00:24:00 ] forthは括弧が無いのが失敗だったな。w 括弧でわかりやすくして、逆さから読めばそのままLispになる。
795 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 01:47:08 ] カッコも良いけどconcatenativeじゃ無くなるからな……
796 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:02:53 ] LISP好きだけど括弧ウザイ一派です。 どうにかして括弧をなくせないか色々考えておりますが、現在の所、 予約語を言語内の特別なマクロで定義し、その予約語について ぶら下がる語数やキーワードで判断するという手法でなんとかしよう と思っております。予約語はreadにより振り分けられS式に変換される としましょう。ifならば if <test-part> <then-part> <else-part>という風に。 しかしこれではelseを省略できませんので、thenやelse等のキーワードを 付ける事とします。すなわち、 if <test-part> then <then-part> else <else-part>となります。 お察しの通り、これではC言語同様にぶら下がりelseが処理できません。 でもそれで良いのです。なぜならば、C言語が現状一般的であり、 読みやすいとされる言語だからです。C言語に近い事こそが正義なのです。 そうなるとthenというキーワードも冗長に見えます。 if <test-part> <then-part> else <else-part> なお、LISPではC言語と違い、test-partの中にもifが書けてしまいますが これをLISPの利点としてしまうには早計です。C言語では式と文で 区別されているため、if文の代わりに条件演算子を使わなければ 書けないという仕様になっています。なぜこんな仕様にしたのでしょうか? 考えたことあるでしょうか。
797 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 08:03:40 ] (中略) と、こういった事は皆さんLISPを使っていれば一度は思う所でしょう。 文法を自在に定義できるLISPは一見万能に思える言語ですが、 問題もあります。最初に、予約語はreadにより振り分けられS式に 云々と書きましたが、そうするとS式に変換した段階でソースコードとは 異なる状態で保持される事になります。これはLISPマクロと同様に デバッガで追う事が非常に困難になる事を示しています。デバッガで ソースコードと同期を取るには、とにかくread時に抽出したトークン列の 位置を正確に記していくしかありません。そうしても、1行に何十にも 重なったマクロでは追う事がほぼ不可能になってきます。今では C++のテンプレートでも同様の問題として認知されていますが、 テストケースを作るといった消極的策しかいまだ解決の糸口は見えません。 こういた問題を孕んでいる以上、予約語をマクロで置き換えていくなぞ 愚行と言えるでしょう。ハードコーティング最高!と結論付けて 終わりの言葉とします。
798 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 09:33:59 ] Lisp:S式の理由 ttp://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Lisp%3AS%E5%BC%8F%E3%81%AE%E7%90%86%E7%94%B1 括弧の理由 (1) -- Emacs による S 式編集支援 ttp://lispuser.net/memo/emacs/2006-12-20-20-36.html まぁ結局S式に落ち着くと
799 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 12:06:56 ] はてなブックマークで、目を疑うような記事が。 魔法言語 リリカル☆Lisp lyrical.bugyo.tk/ 大反響...。 b.hatena.ne.jp/entry/http://lyrical.bugyo.tk/
800 名前:デフォルトの名無しさん mailto:sage [2007/01/31(水) 18:43:14 ] ちゅるやさんの人? ぱちもん?
801 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:08:38 ] >LispとはLISt Processingの略で名前通りリストの処理を得意とします。 このことから人工知能の開発に多く用いられています。
802 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:18:30 ] LispがAIに使われていたのは記号処理が容易だったからなのだが……
803 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:24:29 ] リスト処理 ⊂ 記号処理
804 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:29:15 ] >>801 > リストの処理を得意とします。 このことから人工知能の開発に多く用いられています。 「このことから」で済むくらいリスト処理と人工知能の関連が 自明な相手が想定読者なのだろうか?
805 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 02:37:02 ] 正直キモイ。ただただキモイ。
806 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 13:09:02 ] いいじゃん、これがLISPの門戸に人を集めるきっかけになるなら。 頂の高さは、裾野の広さ(とゴミの多さ)で支えられるものだと思うよ。
807 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 13:34:43 ] Lispeは非Lisperからキモがられてるし、 今さらそんな生理的嫌悪がなんだって話だ。
808 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 13:39:20 ] アニオタ氏ね
809 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 14:14:57 ] メンバーは大学4年生か 卒論控えてるというのに余裕だな...
810 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 15:30:12 ] >>809 世の中なめてるだけだと思う。
811 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 19:46:52 ] アニオタ氏ね
812 名前:デフォルトの名無しさん mailto:sage [2007/02/01(木) 23:04:24 ] なんか頭悪そうなのが来ちゃったな
813 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 00:58:36 ] アニオタ氏ね
814 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 01:18:33 ] バベル案内 ttp://www.aoky.net/articles/steve_yegge/tour_de_babel.htm
815 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 01:50:27 ] なにこの陰険文章……。なんで Ruby 信者は他の言語を貶すわけ? > RubyはPerlのいい部分をすべて盗んだ。 スティーブ ! CPAN ! CPAN !
816 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 01:51:24 ] RubyもPerlもスレ違い。他所でやれ。
817 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 03:10:36 ] 初期のAmazonはCとLispしかリポジトリに入れなかったってので張ったんだけどなw ちょっとポール・グレアムの話と被ったんで
818 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 13:33:15 ] >>817 いや、すんごく面白かったよ。自分の中では数ヶ月に一度ぐらいのヒット。
819 名前:デフォルトの名無しさん mailto:sage [2007/02/02(金) 18:07:14 ] どっかおかしくなってるんだよ
820 名前:デフォルトの名無しさん mailto:sage [2007/02/03(土) 16:45:36 ] >>814 その皆に愛されたmailmanとか言う elispプログラムを見てみたいな。 Lispの生産性の良い例になってるかも
821 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:29:10 ] >820 こいつは違うんかいのう ttp://www.gnu.org/software/mailman/
822 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:38:37 ] >Mailman is written in the Python programming language, with a little bit of C code for security.
823 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 01:41:33 ] PythonはLisp
824 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 13:25:45 ] ほんとだ よく読まんかったorz
825 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 15:19:11 ] ttp://www.cbook24.com/bm_detail.asp?sku=9784274066375
826 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 16:51:37 ] >>825 うおっ 出るのか! 全部印刷しなくて良かったぁw
827 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 16:54:12 ] 漏れも買う
828 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 17:24:24 ] おれも、おれも。
829 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 19:02:23 ] じゃあ俺は印刷で。
830 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 19:39:54 ] >>823 お前は俺
831 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 19:41:26 ] 俺も一冊買わせてもらうぜ野田くん
832 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 20:29:08 ] 印刷して読んでるとこだけど本も買うよ
833 名前:デフォルトの名無しさん [2007/02/04(日) 22:07:46 ] ウェブで全部読んだけど買う。
834 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 22:12:23 ] >>825 古い本だけど待ちわびてた。 この本で日本のCommonLisp熱が盛り上がるといいな。
835 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 22:51:59 ] やっぱり本だと移動中にちょこちょこ見れるからね それにしてもSICP難しすぎるw 挫折しそうw
836 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 23:16:43 ] 移動中に見るなら、本をバラすよりも必要な分だけ印刷する方が楽じゃない?
837 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 03:04:51 ] 別にバラさなくてもいいと思うんだけど 毎回印刷したの止めるのも面倒だし 関連項目を読み直す場合もあるから必要な部分だけ印刷ってのは このての本では逆に向いていないんじゃないかなぁ
838 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 03:52:16 ] 一人3冊な
839 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 07:28:42 ] ちょw図書館の購入申請で勘弁してくれw
840 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 18:58:13 ] すごい!やっとぉ! 日本語完成したときも感動したけど 本になるとはお疲れ様です
841 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:25:07 ] こんなのあったのね ttp://clemens.endorphin.org/liskell
842 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:38:57 ] >>839 多くの人に読めるようになると考えればむしろ無問題。
843 名前:デフォルトの名無しさん mailto:age [2007/02/06(火) 15:38:02 ] 質問があるのですが、 次のような関数を実行するとgaucheとdrschemeで結果が異なります。 readの評価タイミングは環境依存ということでしょうか? (define (hello) (display "Hello ") (display (read))) gauche: gosh> (hello) scheme <- 入力してから Hello scheme#<undef> <- (display "Hello ")が後から実行 drscheme: > (hello) Hello scheme <- (display "Hello ")が先に実行される scheme ずっとdrschemeのように関数の前から順番に実行されるものだと思っていました。
844 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 15:56:23 ] 順番に実行されてるけど、出力がバッファリングされてるだけ。 (display "Hello")の直後に出力されることを保証したいならgaucheなら(flush)とか入れてみれば。 他の処理系は知らね。
845 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 15:58:37 ] 実行順序は変わっていない。 readによって出力がflushされるかどうかの違い。
846 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 16:14:53 ] >>844 , 845 上手くいきました!ありがとうございました。
847 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 20:36:07 ] lyrical.bugyo.tk/ の体験版が出ていた。 処理系としてはSchemeのサブセットか。 1行入力して、1行出力なので、displayとかの副作用のある関数は使えない。 defmacro, define-syntax もなかった。 スタックは200であふれたが、末尾再帰の最適化をしてくれるようだ。 しかし当然だがすんごく遅い。 しかしタイトルバックにλ山が描いてあるので、個人的にはそれだけでOK。
848 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 23:38:06 ] 「魔法言語 リリカル☆Lisp」ってなあ…、このエロゲ風の雰囲気は何とか ならんのか。会社でいじってて、つい夢中になってしまって、気づいたら人から 変な目で見られてたよ…。 まあ、この雰囲気が売りなんだろうけど。
849 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 23:47:56 ] アレゲな機能が搭載されてないのがガッカリ。
850 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 00:38:52 ] 機能一覧 lyrical.bugyo.tk/func.html letrecがないのはヘタレな自分にはつらいな。
851 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 00:49:11 ] NScripter上で動くのか。 昔同じこと考えたが、死ぬほど遅そうだから実装までしなかったよ。 dyb の psyntax は動かないだろうな。
852 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 20:45:02 ] お勉強パートは評価するときに すたーらいとぶれいかー☆ とか言って欲しいよね
853 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 21:31:52 ] >>652 そういうのは分からんなあ。 すまんが私にはエロゲ教養がないのだ。 REPLのプリント時にビープ音などで通知してくれたら、ありがたいだろうとは 思う。今 taraiを回しているんだけど、ほんのちょっとなのにものすごく時間 がかかるから。 (define (tarai x y z) (if (<= x y) y (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y)))) (tarai 8 4 0) => 実行中…。 おー、やっと終わった。何分かかったんだ、これ。
854 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 21:51:53 ] timeしようぜ
855 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 21:57:53 ] 地獄Lispのほうはまともに動かないな
856 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 22:11:59 ] ほんとだ。 関数定義の構文糖衣がないせいかと思ったけど、 jigoku.bugyo.tk/jigoku.txt (define tarai (lambda... と書いても動かない。 (define tarai (lambda (x y z) (if (<= x y) y (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y))))) => tarai (tarai 4 2 0) => <error!>
857 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 23:34:29 ] いや、動いているようだが。 (define tarai (lambda (x y z) (if (<= x y) y (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y))))) => tarai (tarai 8 4 0) => 8 (tarai 4 2 0) => 4 修正されたのか。
858 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 00:37:27 ] (+ 1 2 3 4 5 6) とかで 3 が返ってくるけどw
859 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 00:43:12 ] 書いてないけど + や * も2引数しか対応していないのかw
860 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 09:44:04 ] 普通に21が返ってくるぜ?
861 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 10:48:08 ] どうやら修正されたせいみたいだ。 昨日から地獄LISPを開いたままだったブラウザで今試したんだけど、 (+ 1 2 3 4 5 6) はやっぱり 3 になった。 そして、ページをリロードして再実行したら、今度は 21 になりますた! たぶん中の人もここを見てるんだろう。
862 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 11:06:26 ] つうことで、乙カレー >> 中の人 意外にちゃんと動くんで、つい遊んでしまうよ。面白いねえ。 希望を言うと、 ・せめてフリーモードだけでもBGMをOFFにする機能が欲しい。 今はこんな感じ。 1.起動に時間がかかるので立ち上げっぱなし 2.何かのきっかけでわずらわしくなって終了 3.また試してみたいことがあって、時間をかけて起動 4.上の1-3を延々と繰り返し 5.ヤケになってBGMファイルをヘヴィメタに差し替え ・画像もOFFに出来たら職場でいじりやすい。 ・チュートリアルはよく読んでないけど、CONSセルをCGアニメーションで視覚 化して説明してくれたら面白そうだ。 ・あとは出来たら、普通に単位を取って幸せになってほしい。
863 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 11:21:35 ] (tarai 6 3 0) => 6 これの評価に約1分30秒かかった。マシンはPen4の2.99GHz。 途中は延々とGCの繰り返し。 ここまで遅いと、いっそ爽快ですらあるな。
864 名前:863 mailto:sage [2007/02/08(木) 11:35:43 ] 上の数字は体験版だが、驚いたことに地獄LISPの方が速いみたいだ。 (tarai 6 3 0) => 6 なら1秒程度。 (tarai 8 4 0) => 8 でも20秒程度で終わってしまう ブラウザは Gran Paradiso 3.0a1 (Firefox3 のα) 意外にもOpera9.10だと(tarai 8 4 0)が1分以上かかる。
865 名前:デフォルトの名無しさん [2007/02/08(木) 12:42:33 ] 地獄はソース読んでみた限りではほとんどオーバーヘッドなさそう。 それに対して体験版のはただでさえ遅そうな某処理系の上に骨組み組んでるから遅いのでは。
866 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 20:09:22 ] JavaScriptって実はもの凄く柔軟性のある言語だったりする? なんかコンビネータ使わなくても不動点関数作れそう
867 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 21:12:28 ] たぶん気のせい
868 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 22:39:15 ] JavaScriptではコンビネータ無しで無名関数の再帰ができるそうだ。 0xcc.net/blog/archives/000159.html arguments.callee を使うと無名関数でも簡単に再帰が書ける。 例: function(x) { return x == 0 ? 1 : x * arguments.callee(x - 1); }
869 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 22:59:17 ] Perlもコンビネータ無しで書けたなぁ SchemeでYコンビネータ書くと結構ゴテゴテしてちょっと悔しい MIT Schemeのマークみたいに簡単に書ければいいのに ってあのまま書けるのってHaskellだっけ
870 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 02:12:50 ] 全然関係ないが感動した www.nicovideo.jp/watch?v=utfSSWUEp6h1I
871 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 19:21:27 ] 中の人はやっぱりここを見ていた模様。 blog.bugyo.tk/lyrical/2007/02/post_13.html > 某所で色々と試してくださる人がいるお陰でデバッグが進んでます。 試験期間中に進めるべきものは別にあるような気がするんだが…。 > このバージョンが欲しい方は4/8開催の「なのはFestival2」まで足をお運 びください(笑) 今見たら関西じゃないか。無理。つうか都内でも心理的にかなり無理。
872 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 23:23:01 ] リリカルたんでオナニーするのだ!
873 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 14:38:51 ] >868 なんかいまいちよくわかっていない気がするんですが、 schemeでも、lambdaが新しい環境を作るときに、 自分自身を指すシンボルを定義してくれればよいんではないでしょうか。 そのコードではarguments.calleeがそれをやってる気がします。 いまマクロで作れないのかどうか考えてます...
874 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 14:47:42 ] そりゃマクロ作ればなんでもできるでしょ
875 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 14:53:11 ] >>825 遅レスになってしまったが... キターッ!!
876 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 15:33:20 ] define-macroで失礼。hygienic-macroサパーリ (define-macro (lambda+ args . body) `(let ((callee #f)) (set! callee (lambda ,args ,@body)) callee)) >function(x) { return x == 0 ? 1 : x * arguments.callee(x - 1); } (lambda+(x)(if(zero? x)1(* x(callee(- x 1))))) といったところか。 単なる構文糖衣。 hygienic-macroだとlambda+をlambdaのまま書けるんだっけ。
877 名前:873 mailto:sage [2007/02/10(土) 16:19:38 ] さっきからsyntax-rulesでやってみてますが、どうしたらいいのかよく分かりません。 (define-syntax fn (syntax-rules () ((_ (arg) body) (letrec ((self (lambda (arg) body) )) self )))) とかやっても、selfはマクロの外では定義されてないので、 selfを使うとunbound variableになってしまいます。 keywordにしたとしても、明示的にパターンに書かないと捕捉してくれません。 ひょっとしたらsyntax-rulesでは書けないのでしょか。
878 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 16:39:24 ] recってのがSRFIにあったと思ったんだけど。
879 名前:873 mailto:sage [2007/02/10(土) 17:16:47 ] >878 ありがとうございます。 これ=> ttp://srfi.schemers.org/srfi-31/srfi-31.html ですね。selfを外に出してやればよかったんですね。 でもいまいち冗長な気がしてしまいます...
880 名前:デフォルトの名無しさん [2007/02/11(日) 00:40:52 ] define-macroで十分だよね。 syntax-caseとかソース読んでも保守できないうんこ。 無闇に敷居を上げるだけ。 >>876 なんか5秒で書ける。それも瞬時に頭の中で完成してる。 展開した形も即把握できる。 何故ならただのリスト処理だから。 quasiquote理解した直後に誰でも書けるハズだ。 日本のschemerでhygienicマスターしてる奴って5%もいないだろ。 hygienicはいらない子。
881 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 00:51:21 ] 一派的にhygienic(衛生的)なものより不衛生なもののほうが実用的です。 というわけで、不衛生なCommon Lispが一番ですよ。w
882 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 00:52:12 ] ×一派的 ○一般的
883 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 01:19:13 ] >>880 タイピングめっちゃ速いっすね>5秒