1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 00:14:56 ] 過去スレ Part18: ttp://pc11.2ch.net/test/read.cgi/tech/1186922295/ Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/ Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/ Part15: ttp://pc10.2ch.net/test/read.cgi/tech/1151025773/ Part14: ttp://pc8.2ch.net/test/read.cgi/tech/1132275726/ Part13: ttp://pc8.2ch.net/test/read.cgi/tech/1115901841/ Part12: ttp://pc8.2ch.net/test/read.cgi/tech/1100229366/ Part11: ttp://pc5.2ch.net/test/read.cgi/tech/1091456033/ Part10: ttp://pc5.2ch.net/test/read.cgi/tech/1075630259/ Part9: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/ Part8: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html Part7: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html Part6: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html Part5: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html Part4: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html Part3: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html Part2: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html Part1: ttp://piza2.2ch.net/tech/kako/987/987169286.html
619 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:36:03 ] 束縛関係の解決と評価(この場合は変数参照)は違います。 束縛関係の解決とは C言語風に言えば「変数名がどのアドレスを指すかを確定する事」であり 実際にそのアドレスから値を読み込む事ではありません。 マクロ置換に於いては syntax-rulesの第一引数のリストに列挙されている識別子のみ アドレスも使ったマッチングが行われます。 syntax-rules ()のように識別子が無い場合はアドレスはマッチングに利用されません。 アドレスはマッチング、すなわちどの置換パターンを利用するかを決定するのにのみ利用されるだけです。 そして置換された後の式によって変数が参照されるかどうか決まります。 この場合は置換後の式が(set! variable newValue)なのでvariableは評価されません。 set!の第2引数は評価されるのでnewValueが変数参照されて900となります。 しかし置換後の式が例えば(+ variable newValue)ならば手続き呼出しですので +が変数参照されて#<procedure +>に variableが変数参照されて200に newValueが変数参照されて900に評価されてから 手続きが呼び出されます。
620 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:44:05 ] (A B C)のリストが評価される場合(A B Cは識別子) Aが構文に束縛されているかどうかを調べ ・構文に束縛されている場合 ・primitive構文に束縛されているなら、その評価規則に従って評価します。 ・マクロに束縛されているならパターンマッチを行い、テンプレートに従って置換した後、その式を評価します ・場所に束縛されているなら ・手続き呼出しを行います。AとBとCはすべて評価されますが、順番は決まっていません。 AやBやCが評価されるときに初めて変数参照として値が読み出されます
621 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:52:27 ] マクロ置換された式がリストならまた620の用に評価されます。 primitive構文はdefine、if、quote、lambda、set!のみで 他の構文は全てマクロです。(R5RSの場合。処理系独自のprimitive構文もあり得る。)
622 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:56:49 ] (A B C)という手続き呼出しの場合 AとBとCが評価される順番は決まっていませんが 手続きが呼び出される前には評価されます。 つまりAとBとCが評価された後にAが束縛されていた場所の値を手続きとして呼び出します。 もしAの場所の値が手続きでなければエラーとなります。
623 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:07:03 ] マクロのパターンマッチングは式の形(とリテラル識別子の場合は束縛されている場所)によってのみ行われます なので例えば (define x '(1 2)) (define-syntax foo (syntax-rules () ((foo (x y)) (list y x)) ((foo z) (list z)))) (foo x) -> '((1 2)) となります。 つまり(foo (x y))にではなく(foo z)にマッチした訳です。 (foo x) --(置換)-> (list x) --(部分式の評価)-> (#<procedure list> (1 2)) -> '((1 2)) というわけです。
624 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:35:58 ] リテラル識別子とのマッチングは 正しくはアドレスではなく束縛によって行われますので 構文に束縛されているリテラル識別子は 同じマクロ変換子に束縛されている識別子にマッチします。 構文に束縛されている識別子は 場所には束縛されていませんので アドレスという概念は当てはまりません。 ローカルな変数束縛によって構文束縛が隠蔽される事も ローカルな構文束縛によって変数束縛が隠蔽される事もあります。 なので束縛の種類とその束縛されているモノと字の綴りが同じ識別子のみが リテラル識別子にマッチするという方が正しいでしょう。
625 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 19:48:28 ] 4s/マクロ変換子/構文/
626 名前:567 mailto:sage [2008/02/16(土) 21:05:57 ] >>619 - >>625 早速のご返答ありがとうございます. いま R5RS も見ながら考えさせていただいていますが,もう少し時間をいただきます. 問題の本質とは少しずれますが,私が混乱していた原因の一つに,syntax-rules の 第1引数である literals に含まれている literal-identifier についての誤解があったようです. 「literal」という名前から,字面の一致だけを見るものだと思いこんでいましたが 正しくは,R5RS や >>573 さんはじめ上の書き込みにもさんざんあるように, literal-identifierは >>583 : >ともに未束縛であるか >或いは同じ束縛(例えばトップレベル変数)を持つ場合にのみマッチする ということなんですね.思いこみで記述が頭に入っていませんでした. なお,577:で 5s/template上のsymbol/pattern上のsymbol/ でした.
627 名前:593 mailto:sage [2008/02/18(月) 00:57:16 ] 皆さん、ありがとうございます。遅くなってすみません。 途中から議論が分からなくなってしまったのですが、>>596 さんのコードを実 行したところ、tarai は実行されますが、表示される時間は 0 です。 > (force (delay (time (tarai 800 400 0)))) cpu time: 0 real time: 0 gc time: 0 800 すみませんが、これはどうにかならないでしょうか?
628 名前:593 mailto:sage [2008/02/18(月) 00:59:59 ] あ、バージョンは最新の 372 です。
629 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 01:01:00 ] promise作って終りかw
630 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 10:52:21 ] ちゃんと800が返されてるから 正しいのでは? タライ回し関数は遅延評価で計算すると 正格評価にくらべて格段に速い
631 名前:630 mailto:sage [2008/02/18(月) 11:04:00 ] timeで計測できないくらいの短時間で計算できてるって意味です
632 名前:593 mailto:sage [2008/02/18(月) 13:59:55 ] いや、もっと時間はかかってます。 (force (delay (time (tarai 1000 500 0)))) を実行してみてください。 これで0秒なのは、おかしいでしょう?
633 名前:593 mailto:sage [2008/02/18(月) 14:02:07 ] と言うか、先に0秒という計測結果が表示されてから、10秒ほどして 1000 と いう計算結果が表示されるのです。もしもっと早いマシンをお使いなら、引数 を適宜増やしてお確かめください。
634 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 14:48:40 ] 確かに time構文はLazy Schemeでは使い物にならないと考えた方がいいかも
635 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:18:20 ] たらいまわしべんちでtime構文が使えないなら、Lazyである意義などない!
636 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:00:56 ] こんなんで我慢してちょ (define (bench exp) __(let* ((start (current-milliseconds)) _________(value exp) _________(end (current-milliseconds))) ____(display start) ____(newline) ____(display value) ____(newline) ____(display end) ____(newline) ____(display (- end start)))) ミリ秒でしか測れないし 余計な出力もあるのがダサいけど
637 名前:593 mailto:sage [2008/02/18(月) 17:06:55 ] >>636 ありがとうございます。ちゃんと動きました。 ありがたいことに、自分にも隅々までよく分かるコードです。 しかし、遅延評価であるがゆえに、逆に副作用だらけになってしまったのが、 少し泣けます。
638 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:54:51 ] 正規表現ってRnRSにもSRFIにも入ってないの?
639 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:05:04 ] つ community.schemewiki.org/?scheme-faq-programming#H-1w56qpn
640 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:33:26 ] 実装はいくらでもあるが、標準仕様がないのはなぜかと問いたい 共通語がないと不便じゃないか
641 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 12:45:47 ] R6RSでUnicode化も決まったので、"Beyond R6RS"に入ってます。 schemers.org/Documents/Standards/Charter/status-jun-2006/status-jun06.html#g11
642 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 14:19:47 ] 正規表現は構造を文字列で表現するとこがLISPっぽくない。 まあ普及しちゃったからしょうがないけど、必要悪だろ。
643 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 15:01:38 ] LISPから必要悪を取ったらλしか残らない
644 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 15:40:04 ] すみません、MzSchemeやGaucheで、実行中のスタックの遷移を表示するにはど うしたらよいでしょうか? www1.ocn.ne.jp/~scheme/petite-start.html ↑のページで紹介されている、ChezSchemeの trace関数のようなものです。
645 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 15:50:08 ] DrSchemeでプロセス間通信とかできますか? Schemeにはそもそもプロセスという概念が無い? 今はただ関数定義程度の練習レベルです。
646 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 15:51:20 ] つまり、Schemeで出来ること、あるいはSchemeの用途 がイマイチ分かってないということです。
647 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:32:37 ] gccでプロセス間通信とかできますか? Cにはそもそもプロセスという概念が無い? 今はただ関数定義程度の練習レベルです。 つまり、Cで出来ること、あるいはCの用途 がイマイチ分かってないということです。
648 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:39:45 ] >>647 そうか。意味不明だったか。確かに。 どういう分野に活かしていくのが普通なんでしょうか? 例えば、CやC++ならネットワークプログラミングとかOSとか デバイスドライバとか作成しますが、Schemeのアプリケーション とはどういったものになりますか?コンパイラ作成用途とかになる んですかね?
649 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:07:12 ] そういうのはライブラリに拠るんだから一概にどうとは言えないよ。 まあ記号処理には強いだろうね。
650 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:11:01 ] >>649 記号処理ですか。未知の分野なのでもう少し精進して 調べて見ます。
651 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:42:31 ] >>644 MzScheme だとライブラリを使えばtrace、untraceもOK。 > (require (lib "trace.ss")) >
652 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:51:09 ] >>645 Petite Chez Scheme だとprocessを使って 他のプロセスにデータを送れたよ。 fprintを使うんだったかな。 >>650 数式処理には向いていると思う。 他にもいろいろと応用はあるんじゃないかな。
653 名前:644 mailto:sage [2008/02/20(水) 21:35:05 ] >>651 MzScheme, DrSchemeでうまく行きました。 ありがとうございました。 Gauche はこんな感じのようです。 ・トレース - 結城浩のSICP日記 - sicp sicp.g.hatena.ne.jp/hyuki/20060507/trace
654 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:41:28 ] >>650 使用言語の選択を誤っていると思う あなたの場合Lispを選択する意味はないのではないか 一般に手に入る資料が豊富な分C/C++でやるのがよい
655 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:44:42 ] >>654 C/C++は習得済みで業務で使用してます。 Schemeでプロダクトコード書くわけではないので。
656 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:58:03 ] lispやってる奴がもれなく超人に見える だからやりたい とか言う程の物さ
657 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:16:40 ] >>655 言語の話とライブラリの話がごっちゃになってないかな。 言語の特徴としては、再帰的な処理の記述とか、 メタなプログラミングが楽とか色々あるけど。 そういうことが知りたいんじゃないんだろうし。 Schemeのアプリケーションって言われても、 ウェブアプリケーションサーバ書いてる人もいれば、 .NET向けのアプリケーションを書くために処理系を実装してたり、 日常的に使うスクリプトをSchemeで書いてる人もいたりして様々。
658 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:22:45 ] >>657 >再帰的な処理の記述とか、 メタなプログラミング ここが勉強したいと思ったきっかけです。 >Schemeのアプリケーションって言われても、 >ウェブアプリケーションサーバ書いてる人もいれば、 >.NET向けのアプリケーションを書くために処理系を実装してたり、 >日常的に使うスクリプトをSchemeで書いてる人もいたりして様々。 色々できるんですね。ありがとうございます。
659 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:30:23 ] >>658 ttp://practical-scheme.net/index-j.html にある文章をいくつか読んでみたらどうだろう。ここのスレの人とかが、 何故敢えてLispやSchemeを使うのか、理解する助けになると思う。
660 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:32:48 ] たぶん、プロセス間通信みたいな処理が好きな人は SchemeよりEmacs Lispの方が楽しめると思う。 CL使わないとLispらしさのかけらもないコードになっちゃうけど。
661 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:52:37 ] >>657 >言語の特徴としては、再帰的な処理の記述とか、 >メタなプログラミングが楽とか色々あるけど。 >そういうことが知りたいんじゃないんだろうし。 とオレも思ったのだが >>658 >>再帰的な処理の記述とか、 メタなプログラミング >ここが勉強したいと思ったきっかけです。 という意外な応答 真意がつかめない
662 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:58:39 ] 便乗質問で恐縮です Larcenyでtraceは使えるんですが、再帰関数をtraceしても 再帰的にtraceしてくれません 何かうまい使い方があるのでしょうか?
663 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:40:01 ] >>659 読んで見ます。 >>661 C++でテンプレート使ってライブラリ書きたいんですが 再帰とメタファンクションを使わなければいけないんですよ。 で、そもそも再帰とベースとする言語として関数型言語 を覗いたわけです。
664 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 07:29:08 ] >>662 そうなんだよね、traceがちょっと他と違っている。 libにtrace.schがあるんでこれをハックしてみるとか。
665 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 12:55:30 ] guile + swig でc++のメタ制御してみて便利さを体験してみたら? Gimpのスクリプトで遊んでみるのもいいかも
666 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:52:33 ] gauche本の発売日が1ヶ月伸びてますが、 やっぱりあれだけ赤が入ると無理だったのでしょうか。
667 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 16:23:22 ] Gauche本てどんな読者が対象なんだろう。
668 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:23:12 ] このスレの住人
669 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:24:08 ] まぁ、まんざらでもないよなw
670 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:49:47 ] The Little Schemer読んでる俺も対象に入れてくれお
671 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 18:54:27 ] >>670 ナカーマ 象さん分かりやすいが、文法のリファレンスも欲しい今日この頃。 お勧めありますか?
672 名前:デフォルトの名無しさん [2008/02/21(木) 19:05:40 ] つR5RS 自分はA5用紙に印刷して綴じて常に携帯してる ついでに電子辞書にもtxtファイルで入れてる
673 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:28:28 ] carとcdrは何と読めばいいんでしょうか? カーとクダーでいいですか?
674 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 20:29:03 ] >>672 thx 日本語訳あったんで落とした。
675 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 21:29:24 ] >>673 おk
676 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:12:42 ] >>671 ( ^ω^)λ(^ω^ )ナカーマ 漏れはネットのあちこち入門サイトにお世話になってるお
677 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:23:57 ] 再(再(再(再帰)帰)帰)帰
678 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:56:02 ] C/C++で仕事するのが面白くなくて辛いです。 Scheme勉強するのは楽しいです。 仕事の時間は無駄な時間に感じます。
679 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:04:03 ] 仕事というのはそういうものですよ
680 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:17:53 ] 確かに、金をもらわなきゃ誰もやらないようなことだからこそ、 金をもらえるんだものね。 金なしでやる人が大勢いるようなことなら、誰も金を出すわけない。
681 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:25:36 ] 家に帰ってSchemeにポートするつもりで作れYO! ようやって作ったScheme版で独立すれば?という夢ぐらいは持ちたいものだw
682 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:27:08 ] だれかR6RSの日本語訳早く作れよ
683 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:15:56 ] R6RSの解説を読んだら、Schemeの欠陥が色々書いてあった CLは細かいところまでよくできてるっぽいし 見かけによらないものだなーと
684 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:50:01 ] >>677 先頭の再と末尾の帰が!
685 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:52:27 ] >>683 >CLは細かいところまでよくできてるっぽい と思えない俺は異常かおrz
686 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:13:30 ] (再(再(再(再帰)帰)帰)帰)
687 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:13:33 ] Common Lisp規格まとめ役のスティール親分が、 Schemeみたいにsymbol-valueとsymbol-functionを統合しとけば良かったなあ けど互換性を重視したから難しかったんだよ そう言っておられたぞ。
688 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:35:56 ] Gauche-libsvmのリンク先に飛べない Gauche c-wrapperはswigみたいなもの? なんでswigにしなかったの?
689 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 05:46:08 ] >>687 へー、初耳だ。 どこで言ってたの?
690 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 09:35:15 ] >>686 それでよし
691 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 09:37:24 ] >>687 >symbol-valueとsymbol-function CL最醜の汚点だと思う
692 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:14:06 ] >>689 bitの井田さんのインタビューかな?
693 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:06:12 ] >>691 ちなみに、funcallを書くのは面倒だけど フォームの頭に構文の名前 (funcallやlambdaやifやマクロの名前) を必ず書きましょう と考えると汚くはない funcallが汚いんじゃなくて、funcallを省略できる設計が汚い
694 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:10:21 ] funcallはあまり気にならないな。むしろ判りやすい。 SPECIAL変数付近の扱いはちょっと汚いかなと思う。
695 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:54:19 ] 個人的にはCLで名前空間が単一/一様でないのは気にかかるところだ 関数とその他の値とを区別無くfirst class objectとして扱うコードを 書きたいときに柔軟性を制約する一因とはならないのだろうか?
696 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:58:11 ] >>693 その話は関連する話ではあるけど、 symbolがsymbol-valueとsymbol-functionの二つ持つという話そのものから、 ちょっと離れていっていると思います。 一つしかない場合もその種の議論は成立するのですから。 >>694 スペシャル変数は、スレッドローカルな変数とか、 elispみたいなバッファーローカルな変数と同様の「パターン」で、 ある種のライブラリ、応用にはとても自然なeval拡張だと思う。 別の機構も考えられるけども、とてもLisp的だと思う。 (拡張というのはレキシカルスコープなevalに対して)
697 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:01:00 ] >>695 そういう「特殊な」ことをやる場所ではfuncallを使う。 そういうとこへ関数を渡すときは #' を付けてましょう。 というのが CL 的発想だと思う。大きなプログラムの中での可読性を 考えれば、そんなに悪くないと思う。 純潔なSchemerには我慢できないだろうけど。w
698 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:29:54 ] >>695 > 関数とその他の値とを区別無くfirst class objectとして扱うコードを CLが違うのはシンボルにセルが2つあるのと関数を適用するときの特別扱いであって、 「区別無くfirst class objectとして扱う」こと自体は普通に書けるじゃん。
699 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:40:16 ] 座席が区別されてるだけで乗客は区別されない
700 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:43:02 ] >>696 >一つしかない場合もその種の議論は成立する そうです Schemeでも関数なのかマクロなのか判断できなくて困ることがある CLを汚いと言えるほどSchemeは綺麗じゃない 変数と関数じゃなくて コンパイル時と実行時とで名前空間を分ければいいのかな?
701 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:44:44 ] 俺は人間が汚れてるから、ちょっと汚い言語のほうが好きだな
702 名前:695 mailto:sage [2008/02/22(金) 13:51:18 ] >>697 >>698 >>699 なるほど
703 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:21:19 ] >>688 >Gauche c-wrapperはswigみたいなもの? そう、ヘッダファイルからスタブを自動生成して関数やデータやマクロなんかをGaucheで使えるようにするもの。 >なんでswigにしなかったの? 最初swigを見たとき、バインディングの作り方がよく分からなかったから。 あと、コンパイルとかInterfaceファイルを作るのが面倒そうだったから。
704 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:07:34 ] The Reasoned Schemer この本はどのような人を対象としてるか読んだ人分かりますか? なんかProlog的なコーディングをSchemeでもできるという紹介 文でしたが、これはScheme的ではない異色の内容なんですかね?
705 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:21:57 ] とてもScheme的な応用の本。 言語プリミティブ的なものが応用対象だから。
706 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:18:06 ] LispとPrologとは両輪だという話を読んだ覚えがある。 On LispでもPrologやってるし。
707 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:20:49 ] 両輪というより、レイヤーが違う感じかな
708 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:30:57 ] Lisp/Schemeにはないが、 ML/Haskellはパターンマッチ渡しがあるから、 論理型言語とは「項書換えシステム」で統一的な見方ができる。 The Reasoned Schemerはその点でも面白い。S式は面白い。
709 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:50:24 ] 買ってみようかな
710 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:58:54 ] The Little Schemerで教えてください。 P.121です。 1> (apples peaches pumpkin pie) はrelではない。なぜならペアのリストではないから。 2> ((apples peaches) (pumpkin pie) (apples peaches)) はrelではない。ペアのセットではないから。 3> ((apples peaches) (pumpkin pie)) はrelですか? yes 4> ((4 3) (4 2) (7 6) (6 2) (3 4)) はrelですか? yes どういうことなのかさっぱりわかりません。
711 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:02:25 ] >>710 まだそこまで読んでない。
712 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:09:41 ] 「セット」は重複要素を許しません。それで後は分かりませんか? ;; カッコに全角を使うのは辞めてください。釣りかと思います。
713 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:15:06 ] >>712 サンクス!そういうことか! ていうか、章の始めで教わってんじゃん・・・1日悩んじまったorz 全角ゴメン。気をつけます! てかP.121じゃなくてP.119だし・・・
714 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 19:07:24 ] javascriptがlispに匹敵する表現力があるって聞いたのだけど本当?
715 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 19:39:24 ] brainfuckですらLispに匹敵する表現力がありますけど?
716 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 19:40:14 ] >>714 ecmaスレで聞けよw
717 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:31:44 ] アセンブラ表現力最強ですけどっ!!
718 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:35:09 ] 表現力最強じゃなくて記述力最強だ まあいいや
719 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 20:37:18 ] どちらにしても曖昧だな。強弱比較できるような概念でもあるまい。