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
652 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:18:00 ] 仮割り当て状態のページに I/O するとエラーになるというんだろ。 本当なら OpenBSD のバグなので、そちら方面で報告すべし。
653 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:37:10 ] 別にすれ違いだとは思わないよ。 第一、そんなことも知らないと見下されてるわけか。バカにされたもんだな。 そういうことを聞いてるんじゃないってことがなぜ伝わらないのか。 情報があるなら教えて欲しい、それだけだ。
654 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:54:56 ] >>65 最初の3行は不要 なぜ馬鹿にされたのか、なぜ伝わらなかったのかを考えたほうがいい
655 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:55:27 ] >>654 は>>653 へ
656 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:20:29 ] >>636 でもこんなんなる (car (scheme:list 1 2 3)) mcar: expects argument of type <mutable-pair>; given (1 2 3) (scheme:car (list 1 2 3)) car: expects argument of type <pair>; given {1 2 3}
657 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:18:35 ] >>654 > なぜ馬鹿にされたのか、なぜ伝わらなかったのか 運悪くこのスレに馬鹿が集まっていたからですね。
658 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:12:40 ] 運の悪い奴って何やっても駄目だよな〜
659 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:56:49 ] >>656 list と pair では型が違うと言ってるみたいだね。
660 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:12:29 ] (scheme:car ((scheme:list 1 2 3)) とか (car (list 1 2 3)) なら動くんだろ?
661 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 15:33:58 ] ネタか・・・
662 名前:639 mailto:sage [2008/06/17(火) 17:55:27 ] 具体的にはspvw_memfile.cの1196-1198行目(clisp-2.45の場合)に READ(&old_fsubr_tab,sizeof(fsubr_tab)); READ(&old_pseudofun_tab,sizeof(pseudofun_tab)); READ(&symbol_tab,sizeof(symbol_tab)); というコードがあるのですが、 3つ目のREADマクロ中のread(2)が失敗し、 i386ならEFAULTが、armならEACCESがerrnoにセットされます。 ところが3つ目のREADマクロの前に { int i; for ( i = 0 ; i < sizeof(symbol_tab) ; i += 4000 /* i386の場合。armの場合は3999 */ ) ((char *) &symbol_tab)[ i ] = '!'; /* '!'という値には意味はありません */ } というコードを挿入すればread(2)は失敗しません。 i386なら4001以上、armなら4000以上のiの増分ではread(2)が失敗します。 symbol_tabというのはマクロで、実体はsymbol_tab_dataを指していますが old_fsubr_tabとold_pseudofun_tabはbssセクションに置かれているのに対し symbol_tab_dataはdataセクションに置かれているという違いがあります。
663 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:07:22 ] >>657-658 運の悪い馬鹿は自己申告しなくて良し。
664 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:13:29 ] >>663 お前という馬鹿がここにいるのは>>657-658 の運のせいではないですよ^^
665 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:23:09 ] >>664 常駐乙
666 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:46:40 ] 運の悪い奴は何やっても駄目、という言葉を実感しつつあるw
667 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:11:46 ] 適当な実感でものを判断する奴も全然駄目だけどねw
668 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:28:43 ] 「情報があるなら教えて欲しい、それだけ」ならじっくり待ってろよ、まったく。
669 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:31:29 ] >>662 そこまで追ったのなら、馬鹿はほっといて、短い(CLISPに依存しない)再現プログラムを 作ってOpenBSDの人たちへ報告するのが良いと思う。
670 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:47:23 ] >>662 その情報、ちゃんとOpenBSDの中の人たちに連絡したら感謝されると思うよ。
671 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:31:58 ] >>656 , >>660 ネタかと思ったけど、R6RSに慣れるまで大変ですねw PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。 mutable(変更可能)なペアは別のデータ型として提供されてるようです。 たぶん>>656 , >>660 で言ってることがそれだと思います。 手持ちのプログラムを食わせてみたら同様の文句を言われましたw 当面、372のままで行きます orz
672 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:40:50 ] ようわからんが、C→C++でconstの扱いが変わったような感じなのかな。
673 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:50:10 ] C++/CLIにポインタが2種類あるような感じだな
674 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:56:59 ] immutableなconsセルというと後藤英一氏のHLISPが元祖だろうな。
675 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:37:18 ] >>PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。 これ、PLTのどっかに「どうなるかわかんないけど、取り合えずやってみるぽ」って感じの文章なかったっけ? PLTさんお願いです、今回だけで止めてください m(_ _)m
676 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:47:56 ] immutableにして何か利点はあるんですかね? GPU対応とかconcurrent対応ぐらいしか思いつかない。う〜む。
677 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:00:52 ] こうやって解決しないの? (define cons mcons) (define set-car! set-mcar!) (define set-cdr! set-mcdr!)
678 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:15:13 ] Schemeはペアはimmutableでも良いんじゃないかなあ。 そんなに破壊的操作してるもんかね。
679 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 03:27:38 ] >>678 Streamを使えば破壊的操作を使うから多いと思う。
680 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 07:39:44 ] >> 677 (define cons mcons) が define-values: cannot change constant identifier: cons な エラーになります orz
681 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:02:56 ] >>680 マクロは?
682 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:21:59 ] DrSchemeはネタの巣窟ですね MzSchemeなら問題ないです
683 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:03:53 ] >>675 これ? blog.plt-scheme.org/2007/11/getting-rid-of-set-car-and-set-cdr.html
684 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:35:55 ] >>683 それだ!サンクス で、結局やることになっちゃったんだな。4.0でこうなったってことは... そりゃ自分で書いたコードなら直すのも簡単だけどね orz
685 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:26:10 ] set-car!: name is not defined, not a parameter, and not a primitive name set-mcar!: name is not defined, not a parameter, and not a primitive name 使えない orz
686 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:29:02 ] >>681 これで一応動く(PrettyBigモードとか)。SICPの学習には不便しないだろう。 (ただしR6RSとは共存出来ない。) (define-syntax cons (syntax-rules () ((_ a b) (mcons a b)))) (define-syntax set-car! (syntax-rules () ((_ a b) (set-mcar! a b)))) (define-syntax set-cdr! (syntax-rules () ((_ a b) (set-mcdr! a b))))
687 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:55:29 ] ;こんな感じ。 ;pre.plt-scheme.org/plt/doc/reference/mpairs.html (require scheme/mpair) (define-syntax cons (syntax-rules () ((_ a b) (mcons a b)))) (define-syntax set-car! (syntax-rules () ((_ a b) (set-mcar! a b)))) (define-syntax set-cdr! (syntax-rules () ((_ a b) (set-mcdr! a b)))) (define-syntax list (syntax-rules () ((_ a ...) (mlist a ...)))) (define Qoo (list 3 4)) (set-car! Qoo '(5 6)) (set-cdr! Qoo '(7 8)) (display Qoo) ; => {(5 6) . (7 8)}
688 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:07:21 ] >>687 サンクス! でも、こんどは (map cons lst1 lst2) が大破しました... "orz" それなりの混乱が予想されるのにこうなったって事は何か良い見返りがあるはずだよね... 「隊長!comp.lang.schemeのアナウンスからPLT方面に潜入して偵察を試みてみます。自分が帰ってこないときは英語が解読できなくて玉砕したと思ってください orz」
689 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:10:45 ] (define Qoo (list )) (mlist? Qoo) ; => #t (display Qoo) ; => () なぜか{}にはならない。
690 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:13:11 ] >>688 pre.plt-scheme.org/plt/doc/reference/mpairs.html ココの関数はマクロで修正しないとダメポ。 mmapが orz
691 名前:688 mailto:sage [2008/06/18(水) 16:24:41 ] 隊長!自分は現在683より報告のあったBLOGに到着しました。 驚くことにcomp.lang.schemeのアナウンスにはそれらしい情報は例のBLOGにしかありませんでした。 さらに驚くことにBLOGに対するコメントは好意的なものばかりのようです。 もしかして、自分はバカなのでしょうか "orz"
692 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:31:12 ] Schemeは「破壊的操作の時だけアホになります」って言ってるみたいだ… cons せぇっと! car りば〜すぅ! せっとくだー! eq? みたいな。
693 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:33:42 ] (define-syntax map (syntax-rules () ((_ a b ...) (mmap a b ...)))) (map display (list 1 2 3 4 5)) ; => 12345{#<void> #<void> #<void> #<void> #<void>} あれ?うまくいかない?
694 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:36:22 ] (define-syntax map (syntax-rules () ((_ a b ...) (mmap a b ...)))) (map (lambda (x)(* x x)) (list 1 2 3 4)) ; => {1 4 9 16} 大丈夫らしい。
695 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:39:33 ] 正直、Schemeを名乗らないで別の名前を付けてくれと思った。
696 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:40:56 ] Scheme 2.0 って感じだなw
697 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:45:05 ] 今後は従来のをScheme/NewJerseyとかダッサい呼び方するんだろうかw
698 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:49:23 ] 隊長! BLOGにはimmutableなpairでないと (define l (list 1 2 3 4 5)) (map (lambda (x) (set-cdr! (cddr l) 5)) l) が変になるって書いてあるから試してみました。 Gauche(R5RS) (#<undef> #<undef> #<undef>) たしかにちょっと変。 Petite Chez(R5RS) (#<void> #<void> #<void> #<void> #<void>) たしかにちょっと変。 Guile(R5RS) (#<unspecified> #<unspecified> #<unspecified>) たしかにちょっと変。
699 名前:698 mailto:sage [2008/06/18(水) 16:50:09 ] でもR6RSな処理系ではちゃんとエラーになっております。 Ikarus(R6RS) Unhandled exception Condition components: 1. &assertion 2. &who: map 3. &message: "list was altered" Larceny(R6RS) Error: car: 5 is not a pair. Ypsilon(R6RS) error in car: expected pair, but got 5 immutableなpairってやつはR6RSで必要になったから導入したわけじゃないのでしょうか? 自分はちょっと混乱しています "orz"
700 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:54:50 ] >>698 d。俺が馬鹿だったw
701 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:57:25 ] 安全側に改良された感じだな。互換性無視については確信犯だろう。w
702 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:00:02 ] Immutive Schemeって評判いいの?
703 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:02:15 ] >>698 >>699 それはmapの安全性の問題では?
704 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:05:25 ] >>698 のGaucheは、 gosh> (map (lambda (x) x) '(1 2 3 . 5)) (1 2 3) と整合。set-cdr!の結果が#<undef> Guile 1.8.3は、 > standard input:1:1: In procedure map in expression (map (lambda # x) (quote #)): > standard input:1:1: Wrong type argument in position 2: (1 2 3 . 5) > ABORT: (wrong-type-arg) でエラー。
705 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:10:32 ] immutable list相手なら、 (define (map f x) (cond ((not (pair x)) (error "not pair")) ((null? x) ()) (#t (cons (f (car x)) (map f (cdr x)))))) の最初のチェックが不要になることが静的に分かるケースがあるわけですね。
706 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:13:16 ] (define-syntax car (syntax-rules () ((_ a) (mcar a)))) (define-syntax cdr (syntax-rules () ((_ a) (mcdr a))))
707 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:19:18 ] あまり抵抗せずに郷に入れば郷に従うのが良いのでは? 昔の教科書を一字一句変えずに動かしたいという理由が判らん。
708 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:40:54 ] (define-syntax pair? (syntax-rules () ((_ a ) (mpair? a ))))
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の下で