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


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

Lisp Scheme Part26



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)

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です。

338 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 09:12:48 ]
>>336 その例だと(I y (I y))とI ((I y) y)の2パターンにしかならなくないですか

339 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:40:39 ]
最内
I ((I y) (I y)) => I (y (I y)) => I (y y) => y y
I ((I y) (I y)) => I ((I y) y) => I (y y) => y y

最外
I ((I y) (I y)) => (I y) (I y) => y (I y) => y y
I ((I y) (I y)) => (I y) (I y) => (I y) y => y y

340 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:13:54 ]
>>337
グラボのアクセラレータによる画面は普通キャプチャできないけど、その系かな?

341 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 12:04:05 ]
>>341
パソコン初心者でよくわからないんですスイマセン。
Macだとcommand+shift+4とスペースバーでポインタがカメラになった後実行画面を選択するみたいなんですがwindowsにはそれにあたるものはないんですかね。

342 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 12:05:26 ]
Windows板の初心者スレで聞け

343 名前:デフォルトの名無しさん [2009/05/24(日) 13:18:38 ]
PrintScreenボタン押せばいいんじゃね?

344 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:37:26 ]
君、軽くイラっとさせてるのに気づかないタイプでしょ?

345 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:03:03 ]
>>339
なるほど、最外も2パターンいけますね
私の勘違いかもしれないですが
1行目の最内の簡約は
最初は右側を簡約してるにもかかわらず、次に左側を簡約しているので
変じゃないですか?
最左最内であれば
I ((I y) (I y)) => (I y) (I y) => y (I y) => y y
となるように思うのですが

別の例を考えてみたのですが
M=(I1 y) (I2 y)
N=(I3 y) (I4 y)の時
((λx.x M) y) ((λx.x N) y)について
最左最内は(I1 y)から
最右最内は(I4 y)から
最左最外は(λx.x M) yから
最右最外は(λx.x N) y
339の例では、1行目は(I3 y)相当の箇所から簡約が始まっています
もし最左と最右以外の内部からの簡約も指すのであれば
最内簡約だけで、最大で2^(木の深さ)のパターン
考えられるようにも思います
ややこしいですが



346 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:05:08 ]
(λx.x M) yは(λx.(x M)) yと書くべきでした。I Mとは別の意味です

347 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:19:37 ]
>>345
左右とか内外と言うのは、最初に簡約する箇所ではなく、最初に探す箇所です。
最初に探した箇所で簡約できなければ、別の箇所から簡約を始めて良いです。

348 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:32:11 ]
左右とか内外と言うのは、最初に探す個所ではなく、簡約する場所の探し方です。

349 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 13:13:59 ]
>>314
【数式処理システム】 Maxima 【Common Lisp】
science6.2ch.net/test/read.cgi/math/1220340695/

350 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:44:09 ]
>>347-348
ありがとうございます。やっと理解出来ました。
あと、関連して良サイトみっけました(Mosckw MLの人?)
ttp://ellemose.dina.kvl.dk/~sestoft/lamreduce/lamframes.html

call-by-valueとapplicative orderってそもそも違うものなんですね
・いつlet束縛を展開するか(ζ変換?)
・どの展開形までもっていくか(WHNFや正規形など)

新しい用語が出てきて結果としては謎が深まりましたが
この辺、まとめてある資料ってないですかね・・
applicativeとかnormalとか言われるより
leftmost outermostとかで整理してある方が私には理解しやすいです

後、大雑把に言えば最右最内/最左最内の簡約は、
プログラミング言語では関数引数をどちら側から評価するか、
というだけの違いに思えてきました

351 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:30:38 ]
Arc のアイディアってすごい惹かれるんだけど、どう思いますか?
lambda が fn だったり let とか cond も 極力簡素にするスタイル。
[+ _ 10] は cut より直感的だけど、まぁ cut でも十分かな。
scheme で真似しようと思っけど
hash table や 文字列を手続き的に呼んだりするのは無理だよね。

352 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 20:59:05 ]
> hash table や 文字列を手続き的に呼んだりするのは無理だよね。
Gaucheなら出来ると思うけど。

353 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:17:38 ]
object-apply メソッドな。
でも、あれって評価時にディスパッチされるんだよね?
性能的にはあんまりイケてないかも。
多用することは想定してないじゃろ

354 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 21:18:54 ]
スマンスマン。
なんか勘違いしてたわ

355 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:44:15 ]
>>353
これか。practical-scheme.net/gauche/man/gauche-refj_54.html#SEC97
本当だ、できるね。Gauche使いになろうっと。
教えてくれてありがとう。



356 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:52:57 ]
>>351
pc12.2ch.net/test/read.cgi/tech/1202098949/

357 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 02:11:57 ]
>>350
関数や関数へのポインタを扱える言語、
無名関数を扱える、動的に生成できる言語だと
引数だけじゃなくて、「関数」評価もちょっと意味が変ってきますよね。

Super Combinatorのグラフ簡約で考えると分かりやすいので、
Simon Peyton Jonesの"The Implementation of Functional Programming
Languages"を読んでみてはどうでしょうか。
research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/index.htm

358 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:28:54 ]
>>357
ありがとうございます。
ちょっとずつ読み始めました&Miranda処理系入れました
しかし、大御所は太っ腹ですね

Super Combinatorって名前からして面白そうですが
そこまで行くのにはまだしばらくかかりそうです
あと、読んだ所までですが、
β変換自体の実装にα変換が必要ってのを知り
自分のβ変換プログラムのバグを発見してしまいました
いい本教えてくれてありがとう

359 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 11:00:37 ]
comp.lang.lispのスパムを無視してくれるブラウザーみたいなのないでしょうか

360 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 11:32:39 ]
>>358
そのrenaming problemを解決するのが、
lambda liftingによるsuper combinater化ですね。
YHCってのがsuper combinaterをILにした実装だったけど、
このプロジェクトは立ち消えになったみたいですね。
www.haskell.org/haskellwiki/Yhc

前はHaskell上でlambda式評価器を書いていたDockinsが、
YHC bytecodeのverificationやってましたけど。
www.cs.princeton.edu/~rdockins/lambda/home
www.cs.princeton.edu/~rdockins/presentations/tfp2007/slideshow.xhtml
www.cs.princeton.edu/~rdockins/pubs/tfp2007.pdf

361 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 11:53:39 ]
>>360
>α変換が必要
って書いてあるじゃん。それで合ってるんだから、変なこと教えるなよ

362 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 16:24:30 ]
lambda liftingって酷い名前だな
少なくとも自由変数と何か関係あるぐらいは一目でわかるように名前つけろよ・・・

363 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 22:30:25 ]
>>358

自分も前にラムダ式を簡約するものをSchemeで書いたことがある。
高橋先生の本を読みながらやってたんだけど完全にはできなかった。
Arcのスレにすっごく巧み書かれたのがあったと思う。Arcが発表されて
まもなくだったので驚いたよ。

364 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 22:33:44 ]
lambda liftingってscmのコンパイラhobbitでも使われているっていうアレかな?

365 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 22:36:22 ]
コンビネータとかって実用的に価値はあるの?



366 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 23:31:25 ]
なんかlambda droppingというのもあるみたいだ・・・もうワケワカ(w

367 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 02:47:04 ]
実際にコードに適用させると副作用とかあるからそのままじゃいかんよ






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

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

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