- 1 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:58:40 ]
- □過去スレ□
Part21: ttp://pc11.2ch.net/test/read.html/tech/1207300697/ Part20: ttp://pc11.2ch.net/test/read.cgi/tech/1205021786/ Part19: ttp://pc11.2ch.net/test/read.cgi/tech/1200237296/ 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
- 709 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:48:02 ]
- お言葉ですが >>707 さん、自分がDrSchemeを使うのは「昔の教科書を一字一句変えずに動かしたい」からなのです><
バカと呼んでもらってかまいません... やはりv372への「戦略的な撤退」でしょうか "orz"
- 710 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:58:15 ]
- 目的に合った処理系を。
- 711 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:02:27 ]
- >>710
そうだよね。勉強が目的なのにそれ以外にエネルギー使うの無駄が多すぎる。 読み終わってから試行錯誤したほうがいいんじゃない?
- 712 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:31:53 ]
- R"5"RSの教科書的実装ならばScheme48がいいかも
近々R6RS準拠になる予定だし
- 713 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:32:07 ]
- immutableにした理由って、webアプリのインジェクション対策?
- 714 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:35:24 ]
- >>713
なわけないw
- 715 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:36:15 ]
- >>712
SICPはR5RSやR6RSってわけじゃないんだ。 DrScheme v372以前のPrettyBig modeが一番そのままで書けると思う。 他の処理系だとbegin使えとか言われる表記が満載>SICP
- 716 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:37:16 ]
- 新しいDrSchemeってドキュメントにThreadの項目が増えたの?
- 717 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:38:07 ]
- >>710 >>711 >>712 >>715
みなさんご親切にありがとうございます m(_ _)m どうやら「メジャーバージョンアップ!」しかも「R6RSに触れられる!」とあって舞い上がってしまったようです... でも、今の自分はDrSchemeのマクロステッパーなしでは生きられません "orz" 耐え難きを耐え、しばらくの間4.0は封印しておきます><
- 718 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:38:18 ]
- SICPならMIT-Schemeを使うとか
最近のMITはMzSchemeらしいけど
- 719 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:42:44 ]
- >>718
つまりDrSchemeのMzSchemeモードと中身は同じ。
- 720 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:43:01 ]
- >>718
ありがとうございます。MIT-Scheme使ってみたいんですが... 以前試した時はバイナリーが動かなくて、ビルドもできなくてあきらめてました (orz) カーネルも新しくなったからもう一回挑戦してみようかと思います><b
- 721 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:15:24 ]
- 最近のMITのSchemeはPythonじゃないの?
- 722 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:46:58 ]
- 最近のMITのSchemeがPythonだとは初耳だw
- 723 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:37:58 ]
- Scheme初心者の俺が通りますよ
質問なんだけど、トップレベルってなんか特別なの? (define cc #f) ;A (display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga) ;B (begin (display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga) ) トップレベルでこーやったとき、Aが無限ループにならないのにBが無限ループになるのが理解できないの...
- 724 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:45:37 ]
- >>723
継続はトップレベルをまたげない処理系が多い。(実装依存) そういう意味ではトップレベルは特別。
- 725 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:50:50 ]
- >>724
そーなのかーありがとー 実装依存か 処理系もかかないかんかったね がうちぇです もう一度いいます がうちぇです
- 726 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:51:51 ]
- あれてきたときにスルーするをCommon Lispでどうかくのか?
(progn (loop for i in '(>>657 >>658 >>663 >>664 >>665 >>666 >>667 >>668) do (unintern i)) (gc) 'Done)
- 727 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:13:30 ]
- >がうちぇ
セロ弾きの「ごーしゅ」じゃなかった?
- 728 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:19:17 ]
- ガウチェ(・∀・)
の方がなんとなく小気味良い気がして
- 729 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:19:59 ]
- がうちぇのがしっくりくるのは間違いない
- 730 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:25:26 ]
- がうちぇの方が美味しそう
- 731 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:28:04 ]
- ガウチェ(・∀・)
のほうがかわいいことは確か。
- 732 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:40:36 ]
- >>723-725
DScheme v372 では両方ともhogefugamogaが返ってきた。一応、報告のみ。 理由は説明できないw
- 733 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:50:00 ]
- >>724
R6RSでは明確に決まってなかったっけ?
- 734 名前:723 mailto:sage [2008/06/19(木) 02:12:50 ]
- >>732
両方無限ループならわかるけど無限ループらないのはわからないwwww アリガト!
- 735 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:55:33 ]
- プログラムのトップレベルでの(begin <表現形式1> ...)は、beginのボディを形成する連続する式、定義、構文定義に等しい。(R5RS 5.1)
(display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga) においてcall/ccが返し、ccに記憶される継続は (lambda (x) (print (display x)) (loop (print (eval (read) (interactive-environment))))) と看做せるから無限ループに陥らない。 他方、 (let () (display (call/cc (lmabda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga)) においてcall/ccが返し、ccに記憶される継続は (lambda (x) (display x) (display 'fuga) (cc 'moga)) と看做せるから無限ループに陥る。 (ccの末尾再帰呼出し) beginをR5RS巻末のように合成構文として実装すると後者になるが 原始構文として規格通りに実装すると前者となる。
- 736 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 10:47:48 ]
- >>735
ありがとう。 つまりbegin構文を、Gaucheは合成構文として実装してるけど、 DrSchemeは原始構文として実装してるということみたいですね。
- 737 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 13:21:59 ]
- >>735-736
質問です。原始構文として実装してるということは、ifやletのような特殊形式ということなんでしょうか。 初心者なので特殊形式を知ったばかりですが、SICPにnew-ifという例があったのと似てると思いました。
- 738 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:26:32 ]
- >>735>>736
R5RSの「原始構文」って何よ?
- 739 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:37:01 ]
- Schemeのプリミティヴ構文はif、quote、lambda、define、set!であり、
letやcondなどは導出構文という事になってます。 (但しbeginやdefine-syntax、let-syntaxはマクロでは導出できない) Common Lispでは特殊形式とマクロという区別がありましたが Schemeでは両方構文として扱われます。 どうもbeginはトップレベルでは「beginがない式と同等に扱われる」のは表面上であり、継続は (lambda (x) (begin (display x) (display 'fuga) (cc 'moga)))) ;; beginは冗長 として扱う処理系が多いようですね。 原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。
- 740 名前:723 mailto:sage [2008/06/19(木) 22:01:45 ]
- >>735
ふおおなんか説明してくれてありがとうなんだけど何言ってるかわっかんねw >beginのボディを形成する連続する式、定義、構文定義に等しい。 って、つまりbeginで囲ってないのと同じ意味になるぜよってこと?
- 741 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:09:48 ]
- >>740
つまりR5RSの定義ではbeginのトップレベルにおいてDrSchemeのような挙動が期待されてる。 Gaucheを含めた他の処理系の挙動はR5RSとしてはおかしい。R6RS対応だからというわけでもないし。 これは>>724で言ってた処理系の実装依存の問題というより、うまく実装できていない処理系が多いということだと思う。
- 742 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:15:45 ]
- それがR5RSの仕様に反する事をしないScheme48でも無限ループになるんですよ。
トップレベルのbeginはローカルスコープを作りませんよ〜くらいの意味にも取れますから 無限ループになってもR5RSに反するとは言い切れませんね。 R5RSは細かく呼んでいくと解釈の分かれる部分が多々ありますし。
- 743 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:17:17 ]
- typo
呼んでいく→読んでいく
- 744 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:20:12 ]
- Scheme48でも無限ループになるからR5RSではトップレベルのbeginで無限ループを作ることが仕様に盛り込まれてると?
Gaucheのバグだと思うなぁ
- 745 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:31:28 ]
- いや、R5RSを読む限りでは無限ループになるのもそうでないのも
どちらも規格に反しない、という事だと思います。
- 746 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:44:07 ]
- 初心者の俺様からすれば無限ループになってくれたほうが理解しやすくて幸せだぞ
- 747 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:49:58 ]
- 仕様というのは、それに従って作ればバグが無いものが作れるとは限らない。
だけど、バグが無いものを作るべきだと思うよ。
- 748 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:08:58 ]
- Schemeってどやってshort codingするの?
CならハッカーのたのしみやShort Coding等の本があるのに情報不足でしょ?
- 749 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:39:10 ]
- どうしてshort codingしたいの?
- 750 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 07:10:41 ]
- ChickenってWindowsBinaryのヤツ使えばexe吐けるの?
とりあえずインスコしてやってみてもうまく出来ないし公式サイトにもWindowsでexe作る方法書いてないっぽいし困ってしまったよ! 教えて!エロい人!
- 751 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:20:26 ]
- クイックソートをcps変換したときappendってタイプするのがめんどくなって
(define ++ append) ってしたけどこれはshort codingに入りますか
- 752 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:38:42 ]
- 大きなletrecの下で
- 753 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 11:40:49 ]
- exeなんて飾りです。エロい人にはそれがわからんのですよ。
mingwとmsysをまずインストールしましょう。 そしてchickenのwindows用binaryをCドライブ直下に解凍しましょう。 msys.batを起動しましょう。 export PATH=/c/chicken/bin:$PATHと打ち込んでPATHを設定しましょう。 作られる実行ファイルはlibchicken.dll等に依存するのでPATHを設定しないと起動しません。 vi foo.scmと打ち込んでSchemeソースを作成しましょう。 csc foo.scmと打ち込んでコンパイルしましょう。 ./foo.exeと打ち込んで実行しましょう。 ttp://www.mingw.org/ ttp://nchc.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe ttp://nchc.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.10.exe
- 754 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:43:26 ]
- >>739
> 原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。 かなり細部に渡る話をしているので、言葉は厳密に使った方がいいと思います。 特に今ではR6RSがあるので、何を指していっているのか分からなくなります。 R6RSには"primitive syntax"(9)というのがあって、 > Schemeのプリミティヴ構文はif、quote、lambda、define、set!であり、 とは違うものです。R5RSには"primitive syntax"という用語は出てきません。 またこれら(if, quote, ...)を使ったformは、R6RSの"primitive syntax"(9)の一部である primitive expression types(9.1)にも含まれません。 R5RSでは含まれていた(4.1)のですけれど。
- 755 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:14:41 ]
- (原始式のうち構文キーワードで始まるリスト)と定義、ならよろしいか?
- 756 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:33:57 ]
- 追加:R5RSにおける
- 757 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:34:34 ]
- R5RSでは内部表現を「リスト」と限定していません。
また意味論もリスト上で定義されていません。
- 758 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:37:42 ]
- そういう根源的なところで Scheme って本質的に Lisp ではないんだよな
(茶々すまん)
- 759 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:45:19 ]
- 少なくとも形式的構文上はリストとして定義されてませんか?(R5RS 7.1)
意味論上はともかく。
- 760 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:51:32 ]
- 解釈改憲より新しく書き直したほうが建設的だと思うけどな
実装を書き直す人は腐るほどいるが
- 761 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 14:02:24 ]
- >>759
仕様もR6RSでやったところ。
- 762 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 14:02:46 ]
- 間違えた>>760へのレス
- 763 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:11:45 ]
- >>759
(f a b)が(f . (a b))と同じとは文法には書いてない。 印字表現が似ているだけなのでは? そもそも「構文上リストとして定義」とはどういう意味なのでしょうか?
- 764 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:21:32 ]
- <lambda expression> --> (lambda <formals> <body>)
<quotation> --> '<datum> | (quote <datum>) <assignment> --> (set! <variable> <expression>) <conditional> --> (if <test> <consequent> <alternate>) <definition> --> (define <variable> <expression>) | (define (<variable> <def formals>) <body>) | (begin <definition>*)
- 765 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:23:38 ]
- ただし意味論上の<list>と同一ではない
- 766 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:36:42 ]
- >>741
んなことない。トップレベルでの継続がどこまでの範囲を補足するかの 規定がR5RSには無いんだから、どっちの解釈もあり。 Gauche系の解釈でもトップレベルbeginをletに展開しているわけじゃない (letに展開したらdefineがうまくいかない)。 コンパイルと実行の単位の問題で、継続の捕捉範囲が変わってるだけ。
- 767 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:59:38 ]
- 生存期間が書かれてなければ、無限生存期間なのではないでしょうか。
コンスセルがそうであるように。
- 768 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:15:07 ]
- >>764
これは「構文上リストとして定義」ではないです。 これが「構文上リストとして定義」なら、 他の言語に良くある<式> --> ( <式> ) までそうなってしまいます。 そもそも「構文上リストとして定義」という概念はないと思います。 リストには、シグネチャや意味が付いてまわりますから。
- 769 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:18:32 ]
- >>723
> ;A > (display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) > (display 'fuga) > (cc 'moga) (call/cc (lambda (c) (set! cc c) (cc 'hoge))) (display 'fuga) (cc 'moga) だとどうでしょう?
- 770 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:28:28 ]
- <list> --> (<datum>*) | (<datum>+ . <datum>)
| <abbreviation> <datum> --> <simple datum> | <compound datum> <simple datum> --> <boolean> | <number> | <character> | <string> | <symbol> <symbol> --> <identifier> <identifier> --> <initial> <subsequent>* | <peculiar identifier> <initial> --> <letter> | <special initial> <letter> --> a | b | c | ... | z <special initial> --> ! | $ | % | & | * | / | : | < | = | > | ? | ^ | _ | ~ <subsequent> --> <initial> | <digit> | <special subsequent> <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <special subsequent> --> + | - | . | @ <peculiar identifier> --> + | - | ... と辿れば一応リスト。(構文キーワードも識別子だから) 他の言語に良くある<式> --> ( <式> ) はSchemeには存在しない。 うーん、苦しいw
- 771 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:39:07 ]
- aclって今でもアホみたいに高いの?
USでは$599 (アカデミックユーザ)からとはかかれてたが。
- 772 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:06:43 ]
- レス遅くてサーセン
>>753 指定されたパスが見つかりません。(←MSYS.bat上だと文字化けしてる *** Shell command terminated with exit status 1: /chicken/bin/chicken test.scm -output-file test.c -quiet って言われてしまうお… やった OS WinVista Ultimate MinGW 5.1.4は元から入れてあった MSYS 1.0.10インスコ(インスコ途中にMinGWの場所指定しろって言われたからした PATHをchicken/binな場所に通した msys.bat実行した csc test.scm とかしてみたら上記エラー /(MSYSインスコ場所直下)にchickenフォルダ移してみたりとかもやってみたけどダメだったぜ… よくわかんねーけど ttp://alohakun.blog7.fc2.com/blog-entry-912.html とかみるとoファイルが吐かれるらしいけど、何もファイル吐かれてない… .cも吐かれてない ボスケテ
- 773 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:06:26 ]
- >>772
パス指定がどっかで決め打ちになってる予感。
- 774 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:23:54 ]
- >>772
c:\chicken\bin>csc -dynamic test.scm ってやってみるとgccがないって怒られるけど、.cファイルは作られる。 おそらくオプション指定の問題。
- 775 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:18:40 ]
- csiは起動しますか?
- 776 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:20:48 ]
- 自分の環境でビルドすると.scmから.exeファイルが作られるだけで.cも.oも残りませんね
- 777 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:25:43 ]
- 結局gccが必要なのか。
- 778 名前:デフォルトの名無しさん [2008/06/21(土) 00:31:58 ]
- どうもいろいろ試してみた所772のエラーメッセージは
chickenディレクトリがc:\にない場合に出る模様。 c:\chickenになってますか?
- 779 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:50:28 ]
- >>774
コマンドプロンプトからそれやってみると同じエラーが出る罠 >>775 今やってみたらコマンドプロンプトだと出来るけどMSYSでやってみたら起動しなかった エラーもなんも表示されない不思議な状態になった もちろん何か入力してもなんもなし >>778 d:\Scheme\chicken\binに置いていてお PATHの設定でそっち指定してたけど chickenをC直下において >>753の通りにパス設定したらエラーが変わったお 'gcc' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 *** Shell command terminated with exit status 1: gcc test.c -o test.o -c -fno-strict-aliasing -DHAVE_CHICKEN_CONFIG_H -Os -I /chicken/include で、とりあえずcファイルはできた で、エラーに従って export PATH=/c/MinGW/bin:$PATH とかしてみたら Info: resolvingうんたら〜ってメッセージが5個くらい出たけどtest.exeが出来ました! ついでにobjdump -p test.exeしてみたら DLL Name: libchicken.dll DLL Name: KERNEL32.dll DLL Name: msvcrt.dll だってさ MinGW周りのDLLはいらないっぽいのが不思議だ… というわけでした!みんなありがと!愛してるぜ!
- 780 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:25:18 ]
- >>779
MinGWって、C++のスレッド関係で独自ランタイム必要とするだけで、 CならMSのCランタイムだけで大丈夫じゃなかったっけ?
- 781 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:05:58 ]
- >>200番台でやってた継続の例をwikipediaでみつけた。
en.wikipedia.org/wiki/Call-with-current-continuation >>268-271と似てる〜
- 782 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 02:46:40 ]
- >>767 は >>766 へのレス?
生存期間の話じゃないよ。継続の「底」をどこに取るかって話。 R5RSのトップレベルの実行はREPLの実行と区別されていない。全ての トップレベルフォームが見えてる状態で一気に実行するところを 継続の起点と見るか、REPLにおいてトップレベルフォームひとつひとつ を実行するところを継続の起点と見るか、って違い。 R6RSではREPLそのものが無くなって、トップレベルの意味は明確化された。
- 783 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 09:31:57 ]
- REPLって何?
- 784 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 09:39:13 ]
- Random Electrical Pulse Light
- 785 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:04:02 ]
- reed eeval print lup
- 786 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:08:03 ]
- 呪文:よんでひょうかしていんさつしてくりかえす
- 787 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:12:56 ]
- ググれ
- 788 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:45:05 ]
- 話は変わるけど、Gaucheboxに入ってるGaucheってmingwバイナリパッケージのより新しい?
pegとかも入ってるんだけど…。
- 789 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:26:09 ]
- ; >>783
;The Read-Eval-Print Loop (define (driver-loop) (begin (let ((input (read))) ; read (let ((output (eval input))) ; eval (display output))) ; print (driver-loop))) ; loop
- 790 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:45:57 ]
- >>788
practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox#H-1vw6gwn 基本的にGaucheのCVS HEAD(今はSubversion trunk)をビルドするので、 その時点の最新版が入る。リリース版の0.8.13より新しい。
- 791 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:51:15 ]
- (define (eval x)
x) (define (driver-loop) (begin (let ((input (read))) (let ((output (eval input))) (display output)(newline))) (driver-loop))) (driver-loop)
- 792 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:23:43 ]
- >>791
Lispではよくあることだが、式と値を混同しているね
- 793 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:53:32 ]
- >>792
それではevalのお手本をどうぞ。
- 794 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:01:24 ]
- >>791
> (define (eval x) > x) これマジレスなのw
- 795 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:08:34 ]
- S式を 評価するのに 値呼び
- 796 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:14:49 ]
- 評価頼られてるのに、自分はとんずらして、他に丸投げかよ。
- 797 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:25:15 ]
- あと、継続渡しと称して (lambda (x) x) を渡すこともあるね
- 798 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:49:16 ]
- 普通にこれで動く。
(define (driver-loop) (begin (let ((input (read))) (let ((output (eval input))) (display output)(newline))) (driver-loop))) (driver-loop) でもevalのお手本、観てみたいな。
- 799 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:51:28 ]
- ∩___∩ |
| ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ ( \ / _ノ | | .\ “ /__| | \ /___ /
- 800 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:59:06 ]
- 批判してる奴ってなんでそんなにエバルんだろう?
- 801 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:04:05 ]
- >>797
それ (define (eval x) (lambda (x) x)) という意味? (+ 2 2) => #<procedure> になると思うよ。ちょっとマズイ気がする。
- 802 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:32:42 ]
- 修辞疑問のお手本ですか
- 803 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:01:45 ]
- Lisp Scheme FAQ
「修辞疑問文」 要点を強調するために発せられる修辞疑問文では、答は期待されていない。 多くの場合、答は疑問文自体に含まれるか明白だからである。 前提的疑問文は、答えうるものが何であれ、その人が断定しようと望んでいること以上の情報を含んでしまうだろうから、 ジョークとして用いられたり、相手を困らせるために用いられたりする場合がある。 例) 批判してる奴ってなんでそんなにエバルんだろう? 修辞疑問のお手本ですか
- 804 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:03:20 ]
- なるほど「修辞疑問のお手本ですか」は修辞疑問文の再帰的な定義になっているわけだ。w
- 805 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 06:53:39 ]
- つ「修辞疑問って答えを期待してないんじゃないんですか?」
- 806 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 06:57:39 ]
- >>803
この例の会話ヘンだよ。 >例) >批判してる奴ってなんでそんなにエバルんだろう? <=答えを期待してない >修辞疑問のお手本ですか <=なぜか答えてるw
- 807 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:54:34 ]
- 期待してないものが思いがけず手に入ることだってあるんですよ
- 808 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 15:39:59 ]
- 修辞疑問の意味もわかってないのに使うからだよw
みっともないなぁ。
- 809 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:57:26 ]
- これは勝利宣言っぽいな。或いは単に言葉が足りない。
|

|