[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 09/01 00:11 / Filesize : 268 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

CommonLisp Scheme Part13



1 名前:デフォルトの名無しさん [2005/05/12(木) 21:44:01 ]
過去スレ
Part1: piza2.2ch.net/tech/kako/987/987169286.html
Part2: pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part3: pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part4: pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part5: pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part6: pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part7: pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part8: pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/
Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/
Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/
Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/

関連リンクは>>2-10あたり

21 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 20:09:25 ]
再利用できないゴミばっかだったらGCなんて無意味

22 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 22:25:15 ]
                Prolog  →       …       → Progol
              /
μPlannner→Planner → Conniver→ Scheme → Common Lisp → ISO Lisp
              \      /      ▲このスレ
                Plasma  →    →    →    → ABCL → ...

Simula67→ Smalltalk70 → … → Smalltalk80 →     …          → Java , C# (w

目的指向プログラミング   論理プログラミング            帰納論理プログラミング
積み木の世界       Actor理論               並列オブジェクト 分散オブジェクト
                                                 マルチエージェント  セマンティックWeb

23 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 02:45:27 ]
>>22は何?

24 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 02:55:24 ]
gcされなくなるので参照しないこと

25 名前:デフォルトの名無しさん [2005/05/15(日) 03:52:27 ]
2ちゃんで異様に伸びてるスレって、
大抵ネイティブ住人はとうの昔に消えて、
荒しが初期のスレの拡大再生産してるだけだって噂、本当なんだな。

ここまで荒廃してるとは知らなかった。もうこねぇよ。じゃぁな


26 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 03:55:18 ]
>>25は何?

27 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 04:07:19 ]
>>22>>25

28 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 04:14:59 ]
よくわかりませんが、ここに (gc) 置いときますね

29 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 10:32:03 ]
>>22
いろいろ消し過ぎ....gcのバグか?



30 名前:デフォルトの名無しさん [2005/05/15(日) 11:57:14 ]
以下の処理が実行できない理由を教えて下さい。

(define a 33)
(letrec ((c a)(a 10)) c)


31 名前:30 mailto:sage [2005/05/15(日) 12:22:26 ]
すみません。自己解決しました。

letrecで、cとaの未初期化領域が生成され、cには未初期化のaの値がはいる。
そのため、gaucheだと#undefがでてくる。

letrecの本質は、ローカル変数定義時にエラーを出さずに本体を実行するという部分にあるのですね。


32 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 12:29:16 ]
>>31
 それは違う

33 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 15:51:50 ]
recはrecurs-のrec

34 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 09:37:17 ]
>>31
>letrecの本質は、ローカル変数定義時にエラーを出さずに本体を実行するという部分にあるのですね。
これは違うと思う。30の例はシンタックスエラーになるべきだと思うんだが。

> gaucheだと#undefがでてくる
ということは、もしかしてgaucheだと
(define a 33)
(letrec ((c a) (a 10))
 (set! c a)
 c)
--> 10
になるのかな?
そうなるとしたら、ちょっと不味いと思うんだが....どう?


35 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 09:41:09 ]
>>34
それで10になるのは全然問題なさそうに思うんだけど、どうまずいの?


36 名前:34 mailto:sage [2005/05/16(月) 09:52:10 ]
>>35
gaucheの#undefがどういう意味で出力されているのか知らないから聞いたんだけど、もしこれがletrec全体の評価結果として出力しているとしたら、これはシンタックスエラーを無視して実行していると思えたからなんだ。
これは、cにaを束縛しようとした時点で未定義変数への参照によるエラーが発生するべきだと思うからなんだけど....
これは正しいプログラムなら実行結果は同じになるからいいんだけど、schemeの勉強に使うにはちょっと不味いんじゃないかと思ったんだ。
実際、30は勘違いしたみたいだし。

37 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 10:43:01 ]
補足:
R5RS 4.2.2 より
(letrec

38 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 10:46:37 ]
補足:
R5RS 4.2.2 より
(letrec

39 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 12:11:05 ]
>>36
エラーを出さなくてもR5RS違反ではないけどね。学習用として不親切ではあるな。





40 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 12:20:51 ]
局所変数定義 letrec使ってエラーだエラーじゃないって?
頭が可笑しい人のレスか

41 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 12:32:23 ]
letrec ではすべての局所変数が定義されてから初期化されますが、
初期化中に局所変数をアクセスするとエラーになってしまいますので注意。
すべての初期化が終わってからでないとアクセス出来ません。

letrec は、再帰関数を定義するのに使います。

(letrec
  ((fact (lambda (x) (if (> x 0) (* (fact (- x 1))) 1))))
 (fact 10))

42 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 13:15:00 ]
学習用の DrScheme でもエラーにならないね。
(letrec ((x a) (a 1)) ...) を
(let ((x 未定義) (a 未定義)) (set! x a) (set! a 1) ...) のように展開
する実装では、チェックが難しいのかな。

43 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 13:36:54 ]
エラーになる処理系ある?

44 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 16:07:24 ]
SCM はエラー出すみたい。

45 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 21:36:19 ]
>>9
>継続の使用法
>ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/block.html

これの学生さん卒業したのかな
2005 年 4 月以降どうなるか不明と書いてある

Bill Clementson's Blog も移動するみたいだね
ttp://home.comcast.net/~bc19191/blog/index.html

46 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 22:00:06 ]
ああ。学生の頃の自分思い出して、やり切れない気持ちになった。
特にLispって研究テーマにはなりにくいよなぁ。
最近は、ソフトウェア実装屋を対象とした学部/研究科が増えてるらしいけど。

俺の友人で、どうしても哲学をやりたくて、社会人入学した香具師がいる。
まだ数年前、塾だか予備校で飯代稼ぎながら、いろいろ模索してた。
そこまで真剣に学問の道を考えるなら、きっと誰か拾ってくれるでしょ。と祈りたい(w

47 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 02:55:59 ]
どっかで見た話題だなあと思ったら、似たのが sicp の練習問題にあるね。
letlec じゃなくて internal define だけど。
mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.19

確か r6rs では internal define と関連して letlec* が追加されるとかいう話だけど、
未束縛の変数に左から順に set! していく、て実装だったら
そっちの方がやってる事に即している感じはするな。

48 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 13:10:19 ]
r6rsって出るのかなぁ

49 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 13:17:03 ]
今議論してるんだから、出るだろ。そのうち。




50 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 22:52:50 ]
R6RSに含まれる機能は何でしょう?
おれが欲しいと思ってるのは

・名前空間
(せめてパッケージ)はぜひとも導入して欲しい。
いつまでも大域letで囲むなんて馬鹿げてる。

・多値のファーストクラス化
インタプリタの延長みたいな実装がほとんどの現状で
多値を効率よく扱える手段がないとまともに使いたくない。
(let ((v (values 1 2 3)))
(if (values? v)
 (value-ref v 2) ;; => 3
 (error "excepted values"))
とか。
せめて上のvalues?のように関数の返す値が多値かどうか
呼び出し側で判らないと使い物にならないだろう。

・関数呼び出し側の名前つき引数。
VBのアレは便利だろ?

あと
・キーワード、定義済マクロ名の参照はエラーにする
くだらん論争の種を潰す。

とか。

51 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:18:59 ]
www.schemers.org/Documents/Standards/Charter/

52 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:39:22 ]
>>51
>remove multiple values
正気かよ。

って、まだ決まってないのか。
消すんじゃなくて発展させる方向に行かないかね。
副作用記述減らせる手段の1つなのに。

53 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:49:43 ]
>>50
> ・名前空間
> ・関数呼び出し側の名前つき引数。

Common Lisp で幸せ

54 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:51:41 ]
いや、CommonLispに転向するぐらいならLISP辞めたほうがマシ

55 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:52:37 ]
以降、CL厨が暴れます。。。

56 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:58:10 ]
R6RS より CLtL3 をやってほしい

57 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 00:03:09 ]
>>54
>副作用記述減らせる手段の1つなのに。
詳しく。

58 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 00:19:04 ]
リスト内包表現が簡単に書けた。拡張可能だしhaskellより便利になり得る。
(define-syntax %inner-tuple
(syntax-rules (<-)
((_ (<- ret) form var val rest ...)
(%inner-tuple ret (set! ret (cons form ret)) var val rest ...))
((_ ret form () ()) (let ((ret '())) form (reverse! ret)))
((_ ret form (pred rest-var ...) (<- rest-val ...))
(%inner-tuple ret (if pred form) (rest-var ...) (rest-val ...)))
((_ ret form (var rest-var ...) (val rest-val ...))
(%inner-tuple ret
(let lp ((lis val))
(if (null? lis) '()
(let ((var (car lis))) lis
form (lp (cdr lis)))))
(rest-var ...) (rest-val ...)))
((_ ret form (var ...) (val ...) (var1 <- val1) rest ...)
(%inner-tuple ret form (var1 var ...) (val1 val ...) rest ...))
((_ ret form (var ...) (val ...) pred rest ...)
(%inner-tuple ret form (pred var ...) (<- val ...) rest ...))
))
(define-syntax tuple
(syntax-rules ()
((_ form args ...)
(%inner-tuple (<- ret) form () () args ...))))
(tuple (cons i j) (i <- (iota 10)) (j <- (iota 10)))

59 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 03:22:06 ]
クロージャ用シンタックスシュガー?



60 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 05:09:08 ]
多値なんて (関数引数と戻り値の対称性に関する神学的な論争を除けば)
パフォーマンスハックにすぎないんだから、ファーストクラス化しちゃったら
唯一のメリットが失われるじゃん。
>>50 みたいに扱いたいならリスト返すか、(receive v (values 1 2 3) ...)
で受ければいいだけだしさ。


61 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 23:48:39 ]
神学的な論争こそがschemeの本質なのに!

62 名前:デフォルトの名無しさん mailto:sage [2005/05/19(木) 00:00:16 ]
否定はすまい

63 名前:デフォルトの名無しさん mailto:sage [2005/05/19(木) 00:14:04 ]
……………… き り と り せ ん ………………

64 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 01:34:32 ]
合理性 → HASKELL
神学的論争 → SCHEME
実用性 → その他

65 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 02:10:31 ]
実用性 → Common Lisp に決まってる

66 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 03:57:47 ]
……………… き り と り せ ん ………………

67 名前:デフォルトの名無しさん [2005/05/20(金) 22:23:21 ]
久々にSchemeインタプリタ作った
やっぱええわ

68 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:25:37 ]
久々にCommon Lispコンパイラ作った
やっぱ疲れるわ <湯浅>

69 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:31:35 ]
「ええ、PM経験した僕も、一昨年は近山PMの下でスーパークリエータとしてデビューしました。
 はぎゃー君も誘ったんだけど、彼は真面目だから付き合ってくれませんでした。
 成果物は国際学会の発表ネタに使いまわしたんですけど、
 サスマン教授は『素晴らしい。是非このロボを譲ってくれないか』って激賞されちゃいましたよ」

だいたいマジ



70 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:09:28 ]
おとなげない

71 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:17:04 ]
いみふめ。

こだわらずに楽しい事をやろうとする精神、
そして応募して採択されたもん勝ちだよんとアピールする姿に、
なんか楽しくなっちゃったけどなw

72 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:23:16 ]
重要なのは、言語でなくライブラリだよ

73 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:28:59 ]
>>72
だよねー

74 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:42:32 ]
また頭悪そうなのが粘着しはじめたな

75 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:46:28 ]
言語仕様(意味論込)として、scheme 以上にすっきりした言語
ってなにがありんすか?


76 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:48:10 ]
○ransk?

77 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:03:40 ]
アセンブリ

78 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:05:48 ]
万能チューリング機械

79 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:10:23 ]
brainf*ck



80 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:25:38 ]
>>50
>・名前空間
>(せめてパッケージ)はぜひとも導入して欲しい。
>いつまでも大域letで囲むなんて馬鹿げてる。
遅レスすまそ。let使ってパッケージもどきを作る方法があるの?
Schemeだとlet内でdefineしてもグローバルに反映されないから無理だと
思ってたんだけど(Common Lispならできる)。
モジュールじゃおおげさな時に使いたいので教えて。


81 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 07:56:06 ]
横スレだが、わたしゃこうしてる。
(define export:foo #f)
(let () (define foo ...) ... (set! export:foo foo))
(define foo export:foo)

82 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 09:15:39 ]
それならグローバルなハッシュテーブルに詰め込んでおく方が。

パッケージとは別に、CommonLisp風のset!(ローカルでunboundなら
グローバルにbindする)ができたら便利だとは思うが、Schemeじゃ多分無理。

83 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 09:29:09 ]
俺はこうかな
(define foo #f)
(define bar #f)
(let ()
 (define hoge ...)
 (set! foo (lambda (...)...))
 (set! bar (lambda (...)...))
)
でも、最適化が効きにくくて>>81より遅くなりそうだな...(考え中)

>それならグローバルなハッシュテーブルに詰め込んでおく方が。
それってどんなやりかた?

84 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:15:02 ]
えぇー、scm.libとかでやってる方法がデフォルトだと思ってた

85 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:20:08 ]
(make-hash-table xxx-package)

(let (pi 3.141692)
(define hoge ...)
(hash-table-put! xxx-package 'foo (lambda (...) ...))
(hash-table-put! xxx-package 'bar (lambda (...) ...))
)

(define foo (hash-table-get xxx-package 'foo))
(define bar (hash-table-get xxx-package 'bar))

>>83 こんな感じ。実際こうやって使ったことないからちゃんと動くかわからないけど。
>>84 それはパッケージ管理?CommonLisp風のset!の提供の方?

86 名前:84 mailto:sage [2005/05/21(土) 11:40:44 ]
>>85
パケージ管理の話してるんだろ、ここ?

87 名前:84 mailto:sage [2005/05/21(土) 11:57:22 ]
slibの話のつもりだったんだけど・・・あれ?パッケージ管理してねぇや。。。スレ汚しすまそ

88 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:58:31 ]
slibの話のつもりだったんだけど・・・あれ?パッケージ管理してるけど名前空間は分けてないや。。。スレ汚し^2すまそ

89 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:11:23 ]
つまらんことで悩んでないで Common Lisp 使え



90 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:14:26 ]
うぜ

91 名前:83 mailto:sage [2005/05/21(土) 15:17:48 ]
>>85
なるほどそういう使い方があったのか THX!
すると例えば
(define-syntax define-package
 (syntax-rules (export)
  ((_ pkgname (export id ...) body ...)
    (begin (define pkgname (make-hash-table))
     (let ()
      body ...
      (hash-table-put! pkgname 'id id) ...)
     (define id (hash-table-get pkgname 'id)) ...))))
とやって
(define-package foo-package
 (export foo bar)
 (define hoge 9)
 (define foo (lambda (x) (- x hoge)))
 (define bar (lambda (y) (+ y hoge))))
とすれば
hoge => #unbound
(foo 10) => 1
(bar 10) => 19
となるわけか。
実装に依存したくない時はいいかも!


92 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 16:11:17 ]
hash-table自体が実装に依存する罠
まあ後付で作れるけどさ

93 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 03:54:25 ]
すごく遅くてもいいならalist使えばいい。


94 名前:ミミ [2005/05/22(日) 19:28:26 ]
Scheme でクラスを定義する場合、
メンバ変数の命名規則はどうしていますか?

Java や C++ だと m_var とか _var とか var_ とかで
命名すると思いますが、Scheme でアンダースコアは
あまり使われませんよね。

95 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:43:35 ]
>>94
そうでもない。アンダースコアも普通に使うよ。

96 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:55:17 ]
入力したlistを整数倍してlistで返すにはどうすればいいんですか?(list 3 4) → (list 6 8) みたいな感じです。
consでかえるようにならできたんですが。

97 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:56:18 ]
map

98 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:58:57 ]
>>96
(map (lambda (elt) (* elt 2)) (list 3 4))
--> (6 8)
ってことかな?

99 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:59:39 ]
((cut map * 2 <>) '(3 4))
=> (6 8)
cut :: SRFI 26: Notation for Specializing Parameters without Currying




100 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:02:09 ]
(map (lambda (n) (* n 2)) (list 3 4))
LISPなど全く知らない俺が適当に書いてみました

101 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:16:22 ]
(define-syntax m-list
 (syntax-rules ()
  ((_) ())
  ((_ dat ...) (list (* dat 2) ...))))
(m-list 3 4)
--> (6 8)

102 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:23:36 ]
(define-syntax rewrite-list
 (syntax-rules (list)
  ((_ n (list dat ...))
  (list 'list (* dat n) ...))))
(rewrite-list 2 (list 3 4))
--> (list 6 8)

103 名前:ミミ [2005/05/22(日) 23:28:13 ]
>>95
クラスのメンバ変数をアンダースコアで命名していますか?

104 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:36:35 ]
クラスのメンバ変数など存在しない

105 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:46:45 ]
ハイフォンが使えるのにアンダースコア使う理由って何?
と、LISPなど全く知らない俺が適当に聞いてみる

106 名前:ミミ [2005/05/22(日) 23:50:28 ]
>>104
どういうこと?

107 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 00:03:56 ]
>>105
単に単語の区切りの意味でハイフンは使うから区別したいんじゃね?

108 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 00:08:48 ]
>>107
わかるようなわからんような、実例プリーズ

109 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 03:27:32 ]
すみません。scheme というか lisp 初めたばかりなのですが、
list と cons の意味がわかりません。
(cons 1 2) と (list 1 2) はどう違うんでしょうか。
両方とも car と cdr の結果は同じですよね?




110 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 03:36:08 ]
>>109
car は同じだけど、 cdr は違うよ。

(car (cons 1 2))
1
(cdr (cons 1 2))
2

(car (list 1 2))
1
(cdr (list 1 2))
(2)


111 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 04:07:51 ]
はい。
(cdr (list 1 2))
が (2) になるのはどういった理由かわからないのです…


112 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 04:18:46 ]
あぁ、pair と list の項目を読んでみたら、なんとなくわかった気がします。
スレよごし、スミマセン。


113 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 08:34:12 ]
>>112
cons は「core」で、list は「library」みたいな区別をしてみるのもいいかも.
「library」は「core」から導くことができるんだね. 例えば
list は (lambda x x) と等価とかね ( もちろん lambda は「core」).
後になって、define-syntax とかでマクロを組むときに、きっと役に立つよ.

雑談スマソ

114 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 09:25:14 ]
わざわざオレ用語で説明せんでも。


115 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 11:07:33 ]
>>113
lambda は「library」でいいじゃん
(define-syntax λ
(syntax-rules ()
((_ formals body1 body2 ...)
(let-syntax ((dummy (syntax-rules () ((dummy) #f))))
(define (proc . formals)
body1 body2 ...)
proc))))

116 名前:3歳児 mailto:sage [2005/05/23(月) 11:13:33 ]
たんなることばのもんだいだと思いまちた

117 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 17:04:35 ]
>>111
(cadr (list 1 2))が2になる、って言ったら解る?
(car (cdr (list 1 2)))と同じ。

あと、(list 1 2)は(cons 1 (list 2))と同じ

図で描くと解りやすいけど、図入りの本は持ってないの?

118 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 17:11:34 ]
最もプリミティブなのは点対だからね。
(a b c) ってのは (a . (b . (c . ()))) の略だということを思い出そう。

119 名前:3歳児 mailto:sage [2005/05/23(月) 17:15:23 ]
このすれのれべる、がくっとさがりまちたねぇ



120 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 17:28:09 ]
>>114
R5RS読めば?

121 名前:デフォルトの名無しさん mailto:sage [2005/05/23(月) 18:09:23 ]
R5RSの「primitive」のことを「core」なんて命名してるからオレ言語と
揶揄されてるんじゃないの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<268KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef