- 1 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 19:12:39 ]
- ※ ここはCommon Lisp、SchemeをはじめとするLisp族全般のスレです ※
■過去スレ Part25: ttp://pc12.2ch.net/test/read.cgi/tech/1231856193/ Part24: ttp://pc11.2ch.net/test/read.cgi/tech/1224939205/ Part23: ttp://pc11.2ch.net/test/read.cgi/tech/1215875388/ Part22: ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/ Part21: ttp://pc11.2ch.net/test/read.cgi/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://pc11.2ch.net/test/read.cgi/tech/1151025773/ Part14: ttp://pc11.2ch.net/test/read.cgi/tech/1132275726/ Part13: ttp://pc11.2ch.net/test/read.cgi/tech/1115901841/ Part12: ttp://pc11.2ch.net/test/read.cgi/tech/1100229366/ Part11: ttp://pc11.2ch.net/test/read.cgi/tech/1091456033/ Part10: ttp://pc11.2ch.net/test/read.cgi/tech/1075630259/ Part09: ttp://pc11.2ch.net/test/read.cgi/tech/1069594582/ Part08: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html Part07: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html Part06: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html Part05: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html Part04: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html Part03: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html Part02: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html Part01: ttp://piza2.2ch.net/tech/kako/987/987169286.html ■テンプレート置き場 ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
- 237 名前:デフォルトの名無しさん [2009/05/09(土) 10:37:31 ]
- プロジェクトオイラーって解き始めるとクセになるね。
Lisp以外では解く気が起きない問題も結構あるし 毛色の違う言語を2,3覚えた方が良いような気がしてきた。
- 238 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 11:00:53 ]
- >>237
> 毛色の違う言語を2,3覚えた方が良いような気がしてきた。 これってどういうこと? Lispじゃだめなん?
- 239 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 11:15:43 ]
- project eulerと言えばhaskell
- 240 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 12:05:04 ]
- >>235
CHICKEN は最近 Ver4 になって utf-8 デフォになったためか外部ライブラリ群再構築中 PLT は Ver4 として落ち着いてきたが互換性に難あり (デフォでは else 部なし if はエラー) 私的には Ypsilon あたりが高速かつクリーンで良さげな気がす R5RS ならこんなのも ttp://www.geocities.jp/bneck44/hS.htm
- 241 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 12:23:37 ]
- しかしifがwhenを兼ねるというなら
mapがfor-eachを兼ねてもよさそうなものだが。
- 242 名前:デフォルトの名無しさん [2009/05/09(土) 12:44:02 ]
- >>238
Lispがダメなんじゃなくて単に問題11はCの方が個人的に解きやすかっただけ。 プロジェクトオイラーの問題をいくつか解いたけど 解答はどこをみたらいいのかな? 解いたのはいいけど答えがあってるかどうかわからないので 悶悶としてきました。
- 243 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 12:51:49 ]
- Project Euler のサイトで回答を入れればあってるかどうかわかる。
このスレには貼らないでね。趣味で遊んでるんで、回答とか貼られると萎える。
- 244 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 12:52:49 ]
- >>242
ググると誰かの全問解答がみつかったかな それか垢をつくると答えあわせができるんじゃないかな 垢つくつてログインまでしかしていないけど、なんかそんな感じだったよ >問題11はCの方が個人的に解きやすかっただけ。 手続き型言語で解きたくなるけど、そこを我慢するのがLisper/schemmer
- 245 名前:235 mailto:sage [2009/05/09(土) 13:58:03 ]
- >>236
>>240 ありがとうございます! ご意見いただいた内容を意識してそれぞれ実際に触ってみたいと思います。
- 246 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 18:49:08 ]
- Win版は使った事が無いのだけれど
入門用には完成度の高いScheme48もオススメ R5RSに最も忠実な処理系だと思う もちろん独自の拡張も充実してる R6RS対応版であろう次期リリースが早くでないかとwktkして毎日のようにリポジトリを覗いてる
- 247 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 20:00:39 ]
- >>216
俺もよく理解してないんだが 関数の返り値に クォート付けたリストを渡すと 呼び出し元で書き換えられる可能性があるからまずいらしい。 list で作ったリストを返したほうがいいらしい。 詳しくは On Lisp に書いてある。 www.komaba.utmc.or.jp/~flatline/onlispjhtml/functionalProgramming.html これの GOODNESS で検索した辺りに書いてある。 CommonLisp だが Schemeも変わらないよね?
- 248 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 21:28:31 ]
- > (quote (quote (1 2 3)))
'(1 2 3) > (list (quote (quote (1 2 3)))) ('(1 2 3)) > (' (quote (1 2 3))) *** ERROR
- 249 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:07:13 ]
- チャイティンのLispだと'はQUOTEの別名扱い
(' (1 2 3)) ≡ (QUOTE (1 2 3))
- 250 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:19:35 ]
- (' (1 2 3))だとエラーになるね。Gauche。
- 251 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:27:01 ]
- >>235
日本語資料が一番充実してるのは Gauche だけど、Win ではちょっと不安定かも あと、Common Lisp 寄りでときどき Scheme らしからぬとも評されたり 仕様に一番網羅的なのはおそらく Larceny で IEEE/ANSI から R6RS まで対応 事実上のリファレンス実装と言われることもあるらし
- 252 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:35:08 ]
- ' は (quote) だから ((quote (quote (1 2 3)))) の意味になる
- 253 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:39:17 ]
- gosh> ((quote (quote (1 2 3))))
*** ERROR: invalid application: ('(1 2 3)) Stack Trace: _______________________________________ gosh>
- 254 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 22:47:48 ]
- MzScheme 様と Ypsilon 様は car が手続きじゃねえとお怒りです
- 255 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:02:44 ]
- だーかーらー!チャイティンのLispだと言っているでしょうがぁ
CLならリードマクロテーブルをいじって通せるかもしれないけど Schemeは規格の上では通らない
- 256 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:27:40 ]
- >>248から先は何の話をしているのだ?
- 257 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:36:51 ]
- S式に執着しなければ楽になれるのに。
syntax-rulesは良いね。consもquoteもmapcarもいらないから。
- 258 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 11:49:03 ]
- 手続き名をかっこの外に出す方式は無引数の場合が大変そう
- 259 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 16:38:29 ]
- すべての関数は引数はひとつだけリストで渡します
- 260 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 17:05:59 ]
- lispからcへの可読な変換をしてくれるソフトないのでしょうか?
- 261 名前:247 mailto:sage [2009/05/10(日) 18:55:58 ]
- >>216
同じようなの過去スレで見つけたよ。 LISP Scheme Part5 pc3.2ch.net/tech/kako/1023/10230/1023091882.html 98 名前: 93=95 投稿日: 02/06/17 10:43 >>96 もちろん、 (equal? '(a b c d) (list 'a 'b 'c 'd)) ==> #t です。そういう意味では同じ。ただ、(list 'a 'b 'c 'd)は評価される たびに新しいリストが作られることが保証されているのに対し、 '(a b c d)はコンパイラがあらかじめどっかにリストを作っておいて そのポインタを返すだけ、とするかもしれない(処理系依存)。 (define (foo) (list 'a 'b 'c 'd)) (equal? (foo) (foo)) ==> #t (eq? (foo) (foo)) ==> 常に#f (define (foo) '(a b c d)) (eq? (foo) (foo)) ==> #tかもしれない
- 262 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 10:26:17 ]
- ひょっとして漢字コードを半角文字とみたときに
"/"が入るような文字コードの文字は 処理できないのでしょうか? 2chのdatを読ませてるんだけど AAがよくあるdatだと、読み込みでバグって止まる
- 263 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 18:04:16 ]
- マルチバイトまわりは処理系依存なのでその情報だけでは不足 (\ でなく / なら普通問題ないはず)
処理系と対象ファイルの文字コード、あとできれば止まる前後のエラーメッセージなどplz
- 264 名前:デフォルトの名無しさん [2009/05/12(火) 20:31:11 ]
- www.lsharp.org/
l# だってさ
- 265 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:00:32 ]
- .NETってどうなん?
- 266 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 21:39:02 ]
- いいえ鉄です
- 267 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 23:17:01 ]
- >>265
死にました
- 268 名前:デフォルトの名無しさん [2009/05/12(火) 23:49:10 ]
- >>264
.net系の net Scheme っての知らんの?
- 269 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 02:00:27 ]
- そんなのあるの?
- 270 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 12:34:20 ]
- >>264
asdf-installでProgram Filesフォルダーにいろいろいれてくれたりするのかな と思ったらdefineでもdefunでもなくdefなんだ
- 271 名前:デフォルトの名無しさん [2009/05/14(木) 11:00:47 ]
- >>268
ironscheme.codeplex.com/ これのことか?
- 272 名前:デフォルトの名無しさん [2009/05/18(月) 00:22:56 ]
- (define (fact n)
(if (zero? n) 1 (* n (fact (- n 1))))) という風に記述できない理由は何なのでしょうか? 再帰てきにはこちらの方が自然な気がするのですが... (Common Lispから来たのでSchemeとの違いにまだ戸惑っています。)
- 273 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:24:01 ]
- 何なの、と言われましても
- 274 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:27:07 ]
- >>272
普通に評価できるけど何が問題なの?
- 275 名前:デフォルトの名無しさん [2009/05/18(月) 00:27:14 ]
- いや、どうして動かないのか気になりまして...
展開できるような気がするのですが.... あと、この関数を定義して使うとそのまま、フリーズしてしまうのが こまってしまって...
- 276 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:28:14 ]
- >>275
処理系書いてよ.動かないほうが珍しいと思うけど
- 277 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:30:43 ]
- 最後のかっこが多い
- 278 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:31:43 ]
- すまん別に多くないか
- 279 名前:275 [2009/05/18(月) 00:31:49 ]
- あれ.....端末から直接goshを使ったら動きました....
Emacsのrun-schemeから使ったら突然フリーズしたので 動かないのかと思いまして..... あと、立ち読み版Gaucheプログラミングでこのようなコードが (define (fact n) (define (fact-iter n ans) (if (zero? n) ans (fact-iter (- n 1) (* n ans)))) ; 最後に自分自身を呼び出している (fact-iter n 1)) 出ているのですが、上のコードとこれの違いはどこらへんなのでしょうか?
- 280 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:35:47 ]
- 環境と処理系を書いてくれ。>>272でフリーズとか意味わからん。
- 281 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:42:14 ]
- >>279
末尾再帰。
- 282 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:43:26 ]
- もはや尋ね尽くされた質問だが,>>272が非末尾再帰呼び出しであるのに対し
>>279は末尾再帰呼び出しになっている.>>272が「非」末尾再帰なのは 再帰呼び出し(fact (- n 1))の結果にさらにnを掛ける処理を行っているから.
- 283 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 00:44:00 ]
- リロードできてなかたorz
>>279 p56, 57あたり読んでみて。 って立ち読み版か。
- 284 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 14:41:59 ]
- >>272は中間記法で書くと、
5*(4*(3*(2*(1*1))))って計算。 >>279は、 1*(2*(3*(4*(5*1)))) なので、整数で交換律と推移律が成立するから同じ関数になる。 推移律だけで成立するような定義域の場合、(例えば文字列連結) (define (fact n) (define (fact-iter n acu) (if (zero? n) (* acu 1) (fact-iter (- n 1) (* acu n)))) (if (zero? n) 1 (fact-iter (- n 1) n))) 末尾再帰はこんな形。 ;; 文字列版 (define (fact n) (define (fact-iter n acu) (if (zero? n) (string-append acu "*1") (fact-iter (- n 1) (string-append "(" acu ")*" (number->string n))))) (fact-iter (- n 1) (number->string n)))
- 285 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 16:08:41 ]
- common lispからpythonの機能をいろいろ使えるようにpython-on-lispを拡張してみました
d.hatena.ne.jp/niitsuma/20080328/1242595074 使い方の例 $clisp (asdf:operate 'asdf:load-op :pythononlisp) (py::py "print \"Hello from python\"") (py::pyj "pylab.plot" '(1 2 3 4) '(4 3 2 1)) (py::py "pylab.show()") ;グラフの表示 (print (py::pyj "len" (list 1 5 6 ) ) ) ;3 (print (py::pyj "range" 2 7)) ;(2 3 4 5 6) (py::setvalj "a" (list 2 3 4)) ;lispのデータをpythonの変数aに代入 (py::py "print a") ;[2, 3, 4] ;ちゃんと代入されてるか確認 (print (py::getvalj "a")) ;(2 3 4) ;pythonの変数aをlispのデータとして返す (py::pyj "numpy.reshape" (list 1 2 3 4 5 6 ) (list 2 3)) ; -> ((1 2 3) (4 5 6)) (py::pyj "numpy.dot" '((1 2) (3 4)) '((1 2) (3 4)) ) ; -> ((7 10) (15 22)) ;行列の積
- 286 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 16:57:11 ]
- py::pyってのがエロイ。
- 287 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 19:51:17 ]
- 中学生かおまえは
- 288 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 20:47:32 ]
- (. (.
X Y
- 289 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:07:45 ]
- { {
x Y Cだと乳首が立つ。これが文化の違いってやつだな!
- 290 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:10:10 ]
- >>289
乳首は立ってるだろうがペチャパイに見える
- 291 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:18:08 ]
- 貧乳乳首萌え…ないな
- 292 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:34:57 ]
- <<
x Y なぜか「C++」までエロく見えてくる
- 293 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:38:04 ]
- この期に及んでも括弧の話とは恐れ入った。
- 294 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:40:47 ]
- >>292
上手いなw
- 295 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 09:09:18 ]
- う、いかん、想像してしまった・・・
もう"Y Combinator"とか恥ずかしくて女の子に言えない orz
- 296 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 11:45:03 ]
- Swankとは何なのですか?
- 297 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 12:18:17 ]
- λ. λ.
X Y
- 298 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 12:23:06 ]
- >>296
SLIMEに附属する、lispのrepl環境をサーバ(デーモン)するプログラムのこと これを使うことで複数の処理系のrepl環境を同時に使ったり、 リモートで立ち上げた環境を使うことができる 職安| λ…
- 299 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 15:20:57 ]
- >>298
ありがとう。 λ・・・SLIMEも良くわかってない俺orz Swank-Gaucheというプログラムを公開してる人のブログを見つけたのですが、 初心者では使う必要もないでしょうね?
- 300 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:39:47 ]
- すげー便利だから頑張って入れてみれ
- 301 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 19:04:30 ]
- WindowsでGauche-BoxなんだけどSwank
- 302 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 19:40:03 ]
- 入れれば幸せになれるかな。
- 303 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 22:38:30 ]
- Emacs難しいなぁ・・・orz
invalid escape characterがパスのバックスラッシュだとわかるのに小一時間。 それからslime本体が必要だと理解するのに30分wwww やっとslime-2009-05-20というのを入れたら、 > An error has occurred while loading `c:/Program Files/Gauchebox/Meadow/.emacs': > > Symbol's value as variable is void: slime-lisp-modes そんなこと.emacsに書いてないんですけど…orz 今日はこの辺で勘弁してやる(TωT)
- 304 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:28:30 ]
- Meadow + Slime は微妙らしい
ttp://www.lingr.com/room/common-lisp-jp/archives/2008/09/20 最後の 1/4 あたりまたは "Meadow+SLIME" 検索で
- 305 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:51:07 ]
- ありがとうございます。ただ自分が頭悪いだけかと思ってました(*^ω^*)
- 306 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:52:09 ]
- プログラマにしては表情豊かだな。
Lispをやると笑顔になるってか?
- 307 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:02:20 ]
- \(^o^)/
- 308 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:08:48 ]
- 中村正三郎 乙
- 309 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 09:13:05 ]
- 人居ないと思ったらリンガーに行ったのか。
- 310 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 14:33:04 ]
- ひょっとしてmaximaスレも他に移動してるのか
- 311 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 16:07:40 ]
- ん? Lingrはとっくに終了したはずだが...
- 312 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 16:23:46 ]
- いつからみんな、そんなに長崎ちゃんぽんが好きになったんだ……。
- 313 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:02:41 ]
- IRCでいいじゃない
- 314 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 20:42:38 ]
- >>310
そういうスレッドは他では下しか知らない。 最強!!数学ソフトウェア(maple, mathcad etc) science6.2ch.net/test/read.cgi/math/1051275230/
- 315 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:09:48 ]
- 何で Scheme って評価順が未定義なんですか?
左からで何の不満もないと思うのですが。
- 316 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:15:44 ]
- 自由度があった方が最適化に都合がいいんじゃないかな。
たしかCも引数を評価する順序は決まってないんだよね。以前、仕事で 扱ったコードに評価順序を暗に決めてしまってたいたものがあって、 コンパイラのバージョンアップで評価順序が変わって動かなくなって しまったことがある。つかそのデバッグをやらされた。
- 317 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 00:18:50 ]
- >>316
遅延評価を積極的に持ち込むための布石として順序を未定 にしたんだと思ってた 処理系作る側から見れば, 引数をスタックに積む順番考えると 右側から評価するのが楽っちゃ楽だわな
- 318 名前:デフォルトの名無しさん mailto:save [2009/05/23(土) 05:46:55 ]
- >>317
右からが楽になるのは、不定長引数で引数の数を知らなくてもcalleeが スタックトップからのオフセットでn番目の引数にアクセスできるからじゃない? 引数の数が固定、もしくは引数の数も一緒に渡す場合は右からでも左からでも 変わらないでしょう。 Schemeの場合、左から評価して積んどいた方がrest引数をリストに畳む操作は楽。
- 319 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 06:51:55 ]
- ところでなんでSchemeって
(f . x) で (apply f x) と同じ意味にしなかったの?
- 320 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 06:56:43 ]
- わかりました
(f x y) は (f . (x y)) だからですね ごめんなさい帰ります
- 321 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 07:17:50 ]
- (^o^)ノシ
- 322 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:00:32 ]
- 練習でβ変換のプログラムを書いてるのですが質問
最左最内簡約の場合 ((lambda (x) (lambda (y) y) x) (lambda (z) z))を1段階簡約すると ((lambda (y) y) (lambda (z) z))ではなく ((lambda (x) x) (lambda (z) z))ですよね?
- 323 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:24:13 ]
- > ((lambda (y) y) (lambda (z) z))ではなく
> ((lambda (x) x) (lambda (z) z)) この二つを区別する必要はあるの?
- 324 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:36:02 ]
- >>322
最左最内だと、まず(lambda (y) y) xここからだから正しい。 >>323 ウゼエ
- 325 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:54:07 ]
- つーか最初の式内の(lambda (y) y)は何の意味もないだろ
ほんとに意味わかってやってんのか
- 326 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:54:58 ]
- ( ゚д゚)ポカーン
- 327 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:09:35 ]
- gosh> ((lambda (y) y) 1)
1
- 328 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:12:20 ]
- >>324
ありがとうございます。 用語が色々ありすぎて自身無かったので助かりました。 >>327 クマー
- 329 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:14:29 ]
- で、2段階目はどうすんの?
- 330 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 19:44:50 ]
- >>322
((lambda (x) (lambda (y) y) x) (lambda (z) z)) は ((lambda (x) ((lambda (y) y) x)) (lambda (z) z)) のコピペ誤り?
- 331 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:05:50 ]
- >>330 コピペミスですね、すみません
さらに質問 以下の名古屋大の資料にはcall-by-valueは最右最内戦略に相当すると書いてあり ttp://www.math.nagoya-u.ac.jp/~garrigue/lecture/2007_SS/syntax.pdf 以下の早稲田大の資料にはcall-by-avlueは作用的順序簡約戦略に近いと書いてある ttp://www.fuka.info.waseda.ac.jp/~onono/ProgLang/charts/pl2007-CS-09-LambdaCalculus.pdf 以下のサイトには作用順序簡約は最左最内簡約とも呼ばれると書いてある ttp://www.geocities.jp/lethevert/clean/gettingStarted14.html となると、実際の所call-by-valueは最左最内戦略と最右最内戦略のどちらに相当するのでしょう? 直感的には最右最内に近いように思うのですが また、類推からちょっと考えてみたのですが 最右最外簡約(あまり聞いたことがないが)と最左最外簡約というのは 同じ物ですよね。そういう用語があるかは別として
- 332 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:25:39 ]
- 普通値呼びは最左最内簡約だと思う
自分の不勉強なだけかもしれないけど最右最内簡約って聞いた事無い カリー化のこともあるし右の項から簡約ってできるのかな?
- 333 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 20:29:00 ]
- 三行目は「できるのかなぁ?(できない気がする)」って意味ね
- 334 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:17:08 ]
- 右の項からの簡約も出来ると思いますよ
木構造のpre/in/post orderよろしく、以下の式には ((lambda (l) (l ((lambda (l1) l1) (lambda (l2) l2)))) ((lambda (r) r) (lambda (r1) r1))) ;最左最内 ((lambda (l) (l (lambda (l2) l2))) ((lambda (r) r) (lambda (r1) r1))) ;最左最外 (((lambda (r) r) (lambda (r1) r1)) ((lambda (l1) l1) (lambda (l2) l2))) ;最右最内 ((lambda (l) (l ((lambda (l1) l1) (lambda (l2) l2)))) (lambda (r1) r1)) の3パターン
- 335 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:36:19 ]
- そうか、ボケてた
β基の簡約手段自体は変わらないんだった 右の方のβ基から簡約するようにするだけだからあり得る話だ 関数適用の結合を右結合にするのと勘違いしてた
- 336 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 00:33:52 ]
- I = λx. x として
I (I y (I y)) でテストすれば4パターン全部わかる。
- 337 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:45:16 ]
- ここってDrSchemeも扱ってますか?
大学で使ってるんですが実行画面のキャプチャが出来なくて困ってます。OSはwindowsです。
|

|