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


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

Lisp Scheme Part19



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

210 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 19:54:09 ]
>>208
> どちらでもなければ、どちらでもいい。w
ここだろ? >>207 が頭抱え込んでるのは…


211 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 19:57:08 ]
小さいなら連想リストでいいべ

212 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:04:36 ]
CやC++なんか知らねえ。
おれはscheme一筋って人いますか?

213 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:16:13 ]
>>212
さすがに高級アセンブラであるところの C を知らねぇって奴はいないんじゃねぇの?
C++ とはあまりお近づきになりたくないのは確だけど。W


214 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:27:52 ]
C知らないことはないけど、大規模なのは作ったことないorz

215 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 20:51:28 ]
>>209
巻末の仕様書。

216 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:20:23 ]
Scheme処理系を今時オールアセンブラで書こうっつう漢はいねぇべ

217 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 21:32:41 ]
(defun my-foreach (proc-list 'val-list)
(if (not (cdr var-list))
(proc-list (car val-list))
(progn
(proc-list (car val-list))
(my-foreach proc-list (cdr val-list)))))

(setq list-a '(1 2 3 4))
(1 2 3 4)

(my-foreach '(lambda (x) (print x)) 'list-a)

foreachのような関数をlispで作ろうと考えたのですが、どうもうまくいきません。
上記のようにするとlist-aがvoidだと怒られてしまいます。

218 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 22:00:18 ]
>>216
ツウジテナイw



219 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:03:13 ]
>>216
8008の頃からマイクロプロセッサさわってると衝動的にその罠に落ちる。

#でもarm7とかだと今でも有効なキガス

220 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:21:24 ]
話の流れが見えない
>>213 は (equal? C 高級アセンブラ) => #t
>>216 のは (equal? C アセンブラ) の評価結果はどうなるんだ?


221 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:28:24 ]
>>220 天使のオペレータ
amb!
amb!


222 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:45:42 ]
>>220
そうだと思う。>>216,>>219は妙だw

223 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:30:54 ]
>>217
どこから突っ込めばいいのか……
とりあえず val-list の引用符いらない

224 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:31:31 ]
>>217
(defun my-foreach (proc-list val-list)
(if (not (cdr val-list))
(funcall proc-list (car val-list))
(progn
(funcall proc-list (car val-list))
(my-foreach proc-list (cdr val-list)))))

(setq list-a '(1 2 3 4))
(1 2 3 4)

(my-foreach #'(lambda (x) (print x)) 'list-a)
schemeと違ってlispはfuncallしないと関数は呼び出せないよ。

225 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 00:49:15 ]
あ、list-aにクォート付いてたw
(my-foreach #'(lambda (x) (print x)) list-a)

226 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 01:54:50 ]
>>224
なるほど、勉強になりました。どうもです。

227 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 02:57:56 ]
>>209
全文公開されてるから読め。

228 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 12:51:48 ]
Schemeの「継続」ってのをわかりやすく教えてくれないか。

自分的にはドラえもんの「人生やり直し機」みたいなイメージをもっているんだが。



229 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 13:33:40 ]
なんでも継続 でググ(略

230 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 14:16:46 ]
>>228
的確なイメージですね

231 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 15:16:38 ]
まずは人生やり直し機の実装について語ろうか

232 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 17:03:49 ]
ファーストクラスの継続は、やり直せる。
ファーストクラスの人生は、やり直す必要がない。

233 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:11:06 ]
>>232
で、ファーストクラス未満の人生は、やり直しが効かないと…


234 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:44:04 ]
人生は不可逆だからやり直しはできないだろうけど、
出直しならできるんじゃない。本人は変われないが環境を変えることはできる。

Schemeだと昔の環境を保存しておいて復元した環境に飛び込んでいくんでないの。


235 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:38:56 ]
>>234
人生に関しては逆だよ、変わるのは環境じゃなく自分。
乱暴に言えば自分しか変われる要素は無い。


236 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:40:27 ]
人生の話はスレ違いですよ

237 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 01:22:28 ]
lispは人生

238 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 11:29:02 ]
Schemeは哲学



239 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:09:16 ]
C#は成功

240 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:26:31 ]
Cは仕事

241 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:41:12 ]
国歌がないぞ

242 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:50:38 ]
国家はコッカだけに、
「静かな湖畔の...」と対になる曲が必要だな。

243 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 08:33:14 ]
>>176
>黒田さんとかshiroさんレベルになれれば、

shiroさんはコードとか読んでも本当に凄いと思うんだけど、
黒田さんって凄いの? どっかで氏が書いたコード読めますか?
どんだけ凄いのか是非読んでみたい。
話だけ聞いてると名物*ANSI* CL厨親父にしか思えない人が多い気がする。

244 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 08:34:53 ]
gauche で cons, list に nil 渡すとエラーになる。
これは gauche の仕様っていう認識で OK?

245 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 08:40:36 ]
schemeにnilなんてあったっけ?

246 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 09:49:23 ]
>>245
そもそもないのね。
SICP に書いてあったから、あるのかと思った。

247 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 12:01:03 ]
(define nil '())

248 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 14:03:19 ]
'()や#'(lambda ...)のクオートは省略できる?
というか何故クオートつけるのか分からない…



249 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 15:10:53 ]
前者については
Schemeの場合は()は自己評価的でないからクォートしなければならないとR5RSに明記されている
空リストはアトムだから自己評価的だという考え方もできるけど
リストだからクォートしなければならないとも考えられる。
個人的には自己評価的のほうが自然だと思えるけど。
CLなら自己評価的だからクォートしなくてもいい。

後者については
CLの場合はクォートしない(lambda ...)はlambdaマクロとして評価されて
#'(lambda ...)に展開される。(らしい。CLはよく知らない)

#(...)もCLだと自己評価的、Schemeだとクォートしなければならないけど
自己評価的でいいのに。

250 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:39:52 ]
なるほどありがとう

色々弄ってたら酷い例を見つけてしまった
(flet ((function (x) x)) #'(lambda (x) x))

251 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:43:34 ]
>>249
をいをい。#(...) は配列だぞ。#' でひとかたまり。

252 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 18:57:53 ]
>>251
違う話だからパラグラフを分けたのに><

253 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:07:52 ]
適当な接続詞も入れればよかったね

254 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:25:28 ]
ちなみにとか

255 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:40:14 ]
いや普通わかるだろw

256 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:40:53 ]
いまさらだけど”空リストはアトムだから自己評価的”って
シンボルの例があるから妙な主張でしたね

Schemeの場合#'が(syntax ...)に展開される処理系もあるってことも最初書いてたんだけど
さすがにこの話ではないと思って削って
ついでに#(...)の段落を足したんでした

どこかでCLにおける#()は(vector ...)に展開される入力マクロだからクォートしないって見たような気がするけど
違いますよね?

257 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:46:40 ]
CLにおける#()は入力マクロだけど、そういう話とは別に配列というもの
自体が自己評価的。つまり、何度 eval しても変わらない。

258 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:44:50 ]
>>243
トークショーでの黒田さんのツッコミ能力はすごいぞ。その点期待はずれなのが小飼弾だ。



259 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:46:52 ]
それって的確な突っ込みがビシバシ来る感じ?

260 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:57:37 ]
>>243最初の記事が煽りっぽかったからな。おれも最初は define-syntax しらねーのかよ、とか思ってたクチだが、俺がアホなだけだった…。
まぁ WiLiKi の Scheme:マクロ:CommonLispとの比較:意味論 で Shiro さんが「黒田さんに指摘されてはたと膝を打った次第です。」と書くくらいだからね。
「名物*ANSI* CL厨親父」ってのは初耳な単語だが、まずもうちょっと謙虚に相手の言う事を考える事も必要だと思うよ。

261 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:05:38 ]
そういや昔のスレでも感情むきだしな奴がいたな。Scheme派としては気持はわかなくもないけど


262 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:33:28 ]
WiLiKiを読んで思ったが
<expression>が<datum>であるべきだと仮定すると、
()がreadされた時点で自己評価的なオブジェクトになってるわけだから
やっぱり(quote ())というのは冗長だよなぁ

263 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:40:22 ]
今更な気もするけど、>>2の慶応SFCの
授業ページ(記号処理プログラミング)のリンク切れてるね。

とりあえず2007年度のもの。
web.sfc.keio.ac.jp/~t03596hh/lisp/wiki.cgi

264 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 16:55:36 ]
「入門CommonLisp 関数型4つの特徴とλ計算」(新納浩幸著)

この本、いいなぁ。8章からラムダ計算のこと、Lispによって具体的に説明している。
高橋正子先生の教えを受けたんだ。茨城に住んでいたらぜひとも聴講に行きたいところだ。


265 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 17:11:47 ]
>>264
そいつのブログ見てみろよ。ひどいぜ。
愚痴ばっかだし、自分の研究室の学生をバカにするようなことまでブログに書くんだぜ。
とても大学の教員とは思えない幼稚な記事ばかり。


266 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 17:27:52 ]
>>264

8章は良いですね。

book.mycom.co.jp/book/4-8399-2081-8/4-8399-2081-8.shtml
わかっていて買う人は良いですけど。
タイトル買いをしてCommon Lispの入門に使えないのは残念だと思います。

プログラムをCommon Lispで動くかどうかも試してないみたいですし。


267 名前:264 mailto:sage [2008/01/24(木) 17:42:27 ]
>>265
>>266

なるほど〜、そうなんだ。

FXはちょっとだな...プロにかもられなきゃいいけど。

268 名前:264 mailto:sage [2008/01/24(木) 22:03:16 ]
でも、本はなかなか良いと思う。
黄金比の固有値、固有ベクトルなんかにも触れていたり。
数学へのモチベーションも上がるし高校生なんかにはいいんじゃないかね。



269 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:20:40 ]
本人自演乙

270 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:28:11 ]
>>268
> 黄金比の固有値、固有ベクトルなんかにも触れていたり。
で, どのあたりが
> 数学へのモチベーション
につながるのかな?


271 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:15:13 ]
入門の入門には悪くないと思う
自分はλ計算についてこの本で知った
そしてすぐに高橋正子の計算論、グレアムのAnsi Common Lisp、ディヴィグのプログラミング言語Schemeを買ってどっぷりはまったクチ
でも「代入文は使わない」のところで(Cの)初期化と代入を混同してるような文章がある等
あちこち気になる点があるのも事実
それに高校生の「数学への」モチベーションにはならないと思う

だけどLispやλ計算を知るきっかけになってくれたことには感謝してる
(λ記法は知ってたけどλ算法は知らなかった)


272 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:16:53 ]
入計算λ門

ぱっと見わからないなw
ごめんなさい

273 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:28:58 ]
数学もプログラミングもほとんど素地なくても(←念のため俺のこと)
あの入門本から計算論ていけるもんですか?

274 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:33:24 ]
君の素地次第だからなんとも言えない

275 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:45:57 ]
じゃあ逆に、、どんな素地の人がそんなに一気にはまったのですか?

276 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:55:49 ]
それは逆になっていませんよ

277 名前:271-272 mailto:sage [2008/01/25(金) 02:02:46 ]
274は271じゃないけど
自分は素地というよりλ計算の美しさに魅せられたからだと思ってる

278 名前:271-272 mailto:sage [2008/01/25(金) 02:09:56 ]
あ、それから計算論はまだ読破できてません
自分の素地といえば
・車輪の再発明が大好き
・Smalltalkに惚れた
・MIPSのアーキテクチャに惚れた
・Windows、32bitのx86を毛嫌いしている
・今はSchemeに夢中
・でも一番美しいのはλ式だと思ってる

「美しいものを嫌いな人がいるのかしら?」ってとこかなw



279 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 02:10:00 ]
ディヴィグ本買いそびれてオジサン涙目 orz

280 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 02:15:28 ]
美しいものを嫌いな人はあまりいないだろうが美的センスは個々によってだいぶ違うだろうな

281 名前:271-272 mailto:sage [2008/01/25(金) 02:25:15 ]
そうですね
λ式よりもコンビネータ理論のほうが美しいと言う人もいますしね

282 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 03:05:23 ]
多少不細工でも料理の上手い子のほうがいいよ

283 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:07:48 ]
Perlか。>不細工だけど料理は出来る

284 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 05:13:37 ]
>>270

大学1年で線形代数をみっちりやるじゃない。
後期で固有値、固有ベクトルをやったんだけどその応用のひとつ。
フィボナッチ数列が行列の積として表せて固有値を計算すると黄金比
がでてくるなんてすごいじゃんと思った。
萩谷先生の「関数プログラミング」にもそういう題材があったと思う。
本はどこに片付けたかわからなくて確かめられないけど、たしか
あったと思う。

高校でやる行列やベクトルが実はとても面白い分野と将来結びついてくる
ということを知ればもっともっと数学が楽しくなると思う。


285 名前:275 mailto:sage [2008/01/25(金) 08:35:20 ]
サンキューララァ。なんとなくだけどわかりました。

286 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:25:08 ]
固有値に黄金比が出てくるのは大学受験の時知ったけど…

287 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:50:30 ]
高校生の時、勉強さぼってたんでよくわからないけど、
優秀な人は高校の時に固有値、固有ベクトルに慣れ親しんでるらしいね。
萩谷先生の本だったかエッセーだったかに「高校時代に慣れ親しんだ...」みたいな
話があったと思う。



288 名前:286 mailto:sage [2008/01/25(金) 19:31:03 ]
固有値やったのは俺が旧課程だからかもしれないな。
だって優秀じゃないし(^_^;)



289 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:42:59 ]
CやC++で窓のGUI書くのとLISPで書くのどっちがお手軽かな・・・

290 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:05:52 ]
最近はC#が楽すぎワロタっていう感じ。

291 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:46:10 ]
やっぱKawaでしょ

292 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:44:59 ]
>>278
Lisp系だと「原理主義」にどう対応するかで派閥があるからなぁ。


293 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:50:56 ]
>>278
単なる茶々だけど
> ・MIPSのアーキテクチャに惚れた

NIPS 32bit: シンプルでかわぇぇ!!!
MIPS 64bit: バッチィ… 特にアドレス空間周りがorz

消防とか厨房とかの頃, 好きだった女の子に同窓会でであったら… … …
てな, 心境だったな > MIPS 64bit


294 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 23:52:33 ]
>>279
> ディヴィグ本買いそびれてオジサン涙目 orz

げええっ、絶版かよ!俺もまだ買ってないのに!
www.amazon.co.jp/dp/4894712261
> 現在在庫切れです。この商品の再入荷予定は立っておりません。


295 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:24:54 ]
>>293
激しく同意です
R3000はイカスけどR4000はイケてない
遅延スロット使ってストールなしに分岐できるのがクールなのに
といいつつ一番弄ったMIPSはEmotionEngine(^^;)

>>294
某大手書店の最後の一冊買っちゃった
日本語版の初版第2刷
オライリーさん、>>209の日本語版よろしくです

296 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:46:07 ]
>>294
これって名著なの?
俺買ったけど面白くなかったからSICP買って今それ読んでる。
SICP読み終わってからこれ読んだらわかるようになってるかな?

297 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:49:36 ]
別に名著じゃないと思うけど
グレアムのAnsi Common Lisp/On Lispの方がずっといい
けどSchemeは本が少ないから

自分が持ってるのはディヴィグ本の日本語版、SICPの日本語版、Schemeによる記号処理入門

298 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 00:53:24 ]
本が少ないってのは日本語の本のことね



299 名前:sage [2008/01/26(土) 07:53:15 ]
いま、とんでもないことに気がついたんだが ...
LISP は LISP で アトム を定義することができない
そんな、気がするんだが気のせいか?

300 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 09:12:44 ]
>>299
atom は pure lisp の5関数(CAR、CDR、CONS、ATOM、EQ)に含まれているんだからそらそうでしょ

301 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 10:29:10 ]
Lisp作るのにyaccは不要だがlexに匹敵する強力なリードマクロがあってもいいはず

302 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 12:35:10 ]
>>266
>プログラムをCommon Lispで動くかどうかも試してないみたいですし。

本のサポートページにソースがあったのでちょっとだけ試してみた。
ttp://book.mycom.co.jp/support/e2/lisp/

8章のコードはGCLならOKだったよ。SBCLだとひっかったのがあったけど。
CLだとfuncallとか1+をquoteしなきゃならないとか気持ち悪いので
Schemeで書き直そうかと思っている。

303 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:07:21 ]
λ計算はβ変換で簡約していくのに対して
Lisp、Schemeは都度実際に計算していくので
λとは違うみたいだね。

Lispでλ式をλ計算どおりに簡約化していくものを作ったら面白いかも。

304 名前:303 mailto:sage [2008/01/26(土) 13:12:05 ]
ああ、萩谷先生、もうとっくにそういうの作ってるね。
ttp://hagi.is.s.u-tokyo.ac.jp/boomborg/boomborg-red-j.html

305 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 15:50:38 ]
>>303
いかにしてα変換をサボるかが重要なわけだが

((lambda (x) (lambda (y) x)) y) => (lambda (foo) y)

306 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:15:30 ]
やたー!
OpenBSDザウルスでGaucheが動かせるようになったー!
pdaXromやtitchyやPocketWorkstationに浮気する必要がなくなったー!

307 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:05:38 ]
>>303
その辺りは昔、関数型言語の遅延評価の実装で良く議論されました。
古いけど全文公開されている↓の「第二部 グラフ簡約」など。
research.microsoft.com/~simonpj/papers/slpj-book-1987/slpj-book-1987.pdf

308 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:45:52 ]
>>305
>>307

面白くなってきたので今晩、Schemeでλ計算インタープリタを書いてみるよ。




309 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:34:06 ]
;;λ計算インタープリタ

(define (subst old new f)
(cond ((null? f) '())
((equal? (car f) old) (cons new (subst old new (cdr f))))
((atom? (car f)) (cons (car f) (subst old new (cdr f))))
(else (cons (subst old new (car f))(subst old new (cdr f))))))

(define (lambda? f)
(and (list? f) (eq? (car f) 'lambda)))

(define (atom? f)
(and (not (pair? f))))


(define (beta-redix? f)
(and (lambda? (car f))
(not (null? (cdr f)))))


310 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 22:34:45 ]
(define (beta-conversion l m)
(let ((arg (caadr l))
(body (cddr l)))
(subst arg m body)))

;; (((lambda (x) ...) M)) -> ((lambda (x) ...) M)
(define (deep-lambda? f)
(cond ((lambda? f) #f)
((atom? (car f)) #f)
((and (list? (caar f)) (eq? (caaar f) 'lambda)) #t)
(else #f)))

(define (reduction form)
(cond ((deep-lambda? form) (reduction (car form)))
((not (beta-redix? form)) form)
(else (begin (display form)(newline)
(reduction (beta-conversion (car form) (cadr form)))))))

(define foo '((lambda (x) x) (lambda (a) a)))
(define bar '((lambda (y) y ((lambda (z) x z) (lambda (z) z))) (lambda (a) a)))







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

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

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