[表示 : 全て 最新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)

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 ]
実際にコードに適用させると副作用とかあるからそのままじゃいかんよ

368 名前:デフォルトの名無しさん [2009/06/04(木) 06:47:01 ]
>>363
これ?
natal.web.fc2.com/lambda.arc.txt

369 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 10:45:18 ]
schemeからCへの変換は、わりと可読性残したままできるものなのでしょうか

370 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 12:01:34 ]
継続呼び出しをどう扱うかでえらいことに



371 名前:デフォルトの名無しさん [2009/06/06(土) 12:09:16 ]
Gaucheを使っているのですが、
渡された物がatomかどうか判別する関数って何でしょうか?
CommonLispから来たのであまりわからないのですが
atom?やatompが見当たらないような気がするのですが

372 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:16:25 ]
>>371
(define (atom? x)(not (pair? x)))


373 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 12:55:21 ]
ペア (コンス) も他の型と同様に型の一種でしかない。
「整数ではない」とか「文字列ではない」とかいったことを調べる述語が無いのに
(それとも CommonLisp では有ったりする?)
「ペアではない」ということだけ調べる述語があると不自然、
というような価値観が Scheme では有るように思う。
かといってミニマムな仕様を好む Scheme で全部の述語に否定バージョンを用意するのは論外だし。

374 名前:371 mailto:sage [2009/06/06(土) 13:55:12 ]
>>373
たしかCommonLispでは
integerpとかstringpとかが有った気がします。


375 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 14:16:04 ]
Schemeには政権を取ろうという意欲がない。
何故なら一方にCLという巨峰があり、汚い仕事でも引き受けてくれるからだ。
しかし、R6RSでは政権への意欲を見せた。
だが支持者からも反感を買い、最近は友愛の精神などとわけの分からない事を言い始めているが
結局は小沢の傀儡だろうとの批判が出ている。

376 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 14:22:29 ]
>>374
> integerpとかstringpとかが有った

atom? は pair? の逆だろ?
integerp の逆とかが有るか? っていう話なんだけど。

377 名前:371 mailto:sage [2009/06/06(土) 14:34:31 ]
>>376
なるほど、よくわかりました。
Lispに置けるatomという概念がまだ良くわかっていなくて
了解しました。なるほど、Schemeはpair?の逆ということですね。
Common Lispはatomも属性の一つと認識してる部分がある気がします。

378 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 14:49:46 ]
まー、atom処理したければ (if (pair? ... の else でいいし、
単独で使いたければ if じゃなく unless 使えばいい。
もちろん not つかったっていい。

379 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:24:24 ]
vectorとかのコンテナもatomなのはおかしいと思うのはおれだけ?
いやatomの定義が何なのか知らないので、おれの妄想の意見だが

380 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:27:18 ]
えっ



381 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:36:37 ]
コンテナがpairしかないならいいと思うんだわ>>376の意見は
でもよお


382 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:38:55 ]
(container? (vector 1 2 3)) => #t
(container? (cons 1 2)) => #t
(define (atom o) (not (container? o)))
なら納得なんだわ
schemeの審美眼的にこの辺ほったかかしなのが謎だと思うんだわ


383 名前:デフォルトの名無しさん mailto:sage [2009/06/06(土) 23:58:25 ]
大抵の解釈では
atom=それ以上分解することができないもの
だよな?

vector(やstringも?)分類上コンテナだと思うんだわ

じゃあsymbolはどうなる?とか色々疑問は尽きない

384 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 00:11:13 ]
仰るとおりで

385 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 00:12:18 ]
pairと2要素を持つベクタとの区別は?

386 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 00:15:22 ]
>>385
コンテナかどうかの話なのに、それがどんなコンテナか?
なんて区別の必要があるか?
必要なら個別にpair?とか呼べば?

387 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 00:25:20 ]
俺はvectorがなかった頃に>>372が定石化してしまったから、
そのままatom?がない状態になっているのかと思っていた。

388 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 00:29:01 ]
>>360
まだ全然読めてないですが・・
Cleanとかはグラフ書き換えによって名前衝突回避してるそうですね
Dockins氏のサイト、lambda式の評価器のコードがあったので
落としました。しかし、Haskell読めないという罠

>>363
>>368のArcのプログラム見てみましたが
とても短いのに、そのままschemeに移植したら動いたので感動しました
α変換は暗黙的に置換に含まれてしまってますね

後、コード読んでて気づいたんですが
Arcのfn(lambda)式の引数部分とletはパターンマッチできる!
これはSchemeにも欲しい

;xがλx.Mかはテストしておいて
(let (lam var body) x
 (do (prn lam) (prn var) (prn body) nil))

389 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 04:11:11 ]
>>388
>>>368のArcのプログラム見てみましたが
>とても短いのに、そのままschemeに移植したら動いたので感動しました

すごくうまいよね。こりゃ、かなわんなぁと。
自分は素朴な方法で教科書どおりに書いていました。


390 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 10:00:42 ]
すごい特殊な場合だけα変換が必要みたいに思いがちだけど
疑わしきは全部α変換しておけば確実だということと、

SICPに出てくる環境モデルのようなものが
λ計算の変数の置換にも使えるということがポイントかな。



391 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 19:29:41 ]
>>382
むしろ決められないから atom を定義してないんじゃね?

392 名前:デフォルトの名無しさん mailto:sage [2009/06/07(日) 19:34:50 ]
>>382
文字列はどうするの?






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

前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