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


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

Lisp Scheme Part22



1 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:58:40 ]
□過去スレ□
Part21: ttp://pc11.2ch.net/test/read.html/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://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

377 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:09:09 ]
> 明示的にブロックの終わりを指定できてうれしいじゃん。
君は数式読み上げるときに「カッコ閉じる」って言って快感を得る人かな?

378 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:10:32 ]
endの対としてbeginがないのは確かに気持ち悪い
なくてもわかるけどさw

379 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:11:55 ]
class

ssalc
とか

それはそうとSchemeのbeginはなんとかしてほしい

380 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:16:22 ]
Ruby厨の弁解ウゼー

381 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:19:01 ]
>>378
Wirthキター

ってModula-*もないとこはないよな。> BEGIN

382 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:20:20 ]
Lispもcondの次の((いらねえんじゃね?

383 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:25:36 ]
>>382
Paul Graham乙


384 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:29:09 ]
>>377
>君は数式読み上げるときに「カッコ閉じる」って言って快感を得る人かな?
ハァ? 普通言うだろ。閉じカッコの位置が違ったら意味が変わっちゃうこと
もあるし。演算子優先順位の存在しないLisperはこれだから無頓着で困る。

385 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:30:27 ]
ちなみに、Emacsのruby-modeならendはC-cC-eで自動補完してくれるので
書き手が気にする必要はない・・・・ってなんかどっかで似たような話を
聞いたことがあるようなないような。



386 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:31:43 ]
「カッコ閉じる」は言うな。国家国家言う奴もいたけど。w

387 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:33:24 ]
インデントで優先順位を決めるSchemeの変種を考えるやつが居そう

388 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:35:24 ]
そろそろRuby厨KY

389 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 20:51:26 ]
>>384
> 演算子優先順位の存在しないLisperはこれだから無頓着で困る。

かなりハズしたねw
)ないと困るのはLispでも一緒

390 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:17:07 ]
演算子優先順位なんてまるで関係ないよなw

391 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:19:23 ]
どうやらrubyさんの思考もendのようですね

392 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:23:13 ]
そこでcommon lispのprognですよ

393 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:31:23 ]
progn = beginなら
prog0 = begi0?

394 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:16:36 ]
ANSI Common Ruby

395 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:43:44 ]
漏れの出た学科では「こっか」と読んだ。)。



396 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:51:06 ]
一呼吸置くだけで無問題。いちいちカッコトジルとか言わんでも分かるやろ。まさにKY

397 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:52:14 ]
オッカッ

398 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:52:14 ]
かっこ閉じるがデフォだったが
学校に1人はこっかと読ませる先生がいてだな

399 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:57:33 ]
こっか? シェルスクリプトみたいだよ
if ....

fi

case ....

esac

400 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:17:51 ]
こういうのはどうだろう?

( : かっ
) : っこ

( + 1 2 )
かっ プラ いち に っこ

401 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:30:58 ]
>>396
Haskellの$みたいなのならそれでもいいけど
全部一気に閉じない場合は?

402 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:39:25 ]
>>398
書籍にもあるから結構メジャーなんだと思ってるが。

403 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 04:32:00 ]
>>400
Dirac先生まで来た!

404 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 05:23:10 ]
竹内郁雄先生が「こっか」派だった気がする

405 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 11:41:42 ]
「ぱー」と「れん」だってJargonか何かにあったような



406 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 13:04:47 ]
Ex. This is Yet Another CPS. Explain it!

(define M
(lambda (f)
(lambda (ls)
(cond
((null? ls) '())
(else (cons (f (car ls)) ((M f) (cdr ls))))))))

(define (add1x) (+ 1 x))

((M add1) '(1 2 3)) ;=> '(2 3 4)

407 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 13:16:12 ]
本物のCPSならループの途中で脱出できるはずだ

408 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 13:19:46 ]
>>405
さすがに海外にはnerapと呼ぶ猛者はいないか。アーカードとかレッドラムみたいな。

409 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 14:07:48 ]
>>407
人生の敗北者

410 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 15:26:30 ]
何故そう思う?

411 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:32:49 ]
ErlangでConcurrent Scheme作った人挙手ノシ

412 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:35:11 ]
upyr

413 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:02:50 ]
>>406
あ、出典わかって納得w

414 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 03:00:01 ]
Gauche民もこのスレに集まるの?

415 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 07:00:06 ]
難民呼ばわりかよ



416 名前:デフォルトの名無しさん [2008/06/09(月) 22:34:40 ]
最近Schemeの勉強はじめたんすけど、再帰が全く理解できない・・・orz
誰か助けてー\(*_*)/

417 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:41:56 ]
再帰の何が理解できないんだてめえコラァ!

418 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:57:53 ]
hogehoge lisperシリーズの出番だな

419 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:09:27 ]
>>416
再帰ではなく、単なる手続き呼び出しだ、と思えば良い。
たまたま自分自身を呼んでいるだけ。

420 名前:デフォルトの名無しさん [2008/06/09(月) 23:12:26 ]
構造帰納法を思い出せばいい

421 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:12:46 ]
>>416
他言語で再帰を使った経験は?

422 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:47:57 ]
>>416
(ローカル)変数の寿命とスコープって聞いてスッと頭に入ってくる?
いや、COBOLer とかの、ローカル変数って概念がない人がいたりするので。


423 名前:デフォルトの名無しさん [2008/06/09(月) 23:52:45 ]
みんな親切で驚きました
もうちょっとがんばってみようと思います


424 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:07:26 ]
416の人気に嫉妬

425 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 19:59:03 ]
Gaucheのウィンドウズ版のバイナリって日本語使えない上に、
lambdaもちゃんと動作しないという認識であってますか?



426 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 20:01:32 ]
んなあほな

427 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 20:06:56 ]
いやマジっすマジっす
こんな感じで計算してくれない

gosh>(define test (lambda (a b) (*a b)))
gosh>test 1 5
1
5

428 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 20:20:12 ]
>>427
(test 1 5)


429 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 20:24:49 ]
これは流石にネタだろw

430 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 20:35:32 ]
僕もネタに一票w

431 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 20:35:44 ]
びっくりした

432 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:27:09 ]
(define test (lambda (a b) (*a b)))
test 1 5
=>
#<procedure:test>
1
5

433 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:27:49 ]
次は *a で引っかかるだろうな

434 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:36:34 ]
>>428さんの言うとおりやると

(define test (lambda (a b) (*a b)))
(test 1 5)
=>
reference to undefined identifier: *a

となってしまうでしょう。2段構えの手の込んだネタw

435 名前:427 mailto:sage [2008/06/10(火) 23:05:55 ]
あwwwwwwwwwwwwwwwww



436 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:17:47 ]
>>435
天然キャラ乙。

437 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:45:38 ]
日本語の方のネタもご披露を

438 名前:427 mailto:sage [2008/06/10(火) 23:50:19 ]
gosh> (print "hello")
#<undef>
gosh> (print "こんにちは")
*** READ-ERROR: Read error at "(stdin)":line 2: EOF encountered in a string lite
ral: "ツつアツ・
Stack Trace:
_______________________________________
gosh> *** ERROR: unbound variable: ツソツ
Stack Trace:
_______________________________________
gosh> *** READ-ERROR: Read error at "(stdin)":line 2: extra close parenthesis
Stack Trace:
_______________________________________
gosh>

439 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:52:37 ]
>>438
> gosh> (print "hello")
> #<undef>
> gosh>

ちょっと待て

440 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:07:52 ]
ごめん
1〜3行目はこうだったw

gosh> (print "hello")
hello
#<undef>


441 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:42:26 ]
Gaucheのネイティブコードと入力したエンコードを言ってみろ。

442 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:50:31 ]
そんなことが判るくらいなら悩まんだろw

443 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 00:56:14 ]
C:\>gosh -V
Gauche scheme interpreter, version 0.8.13 [utf-8]

入力したエンコードとは!?
コマンドプロンプトにもエンコードとか指定できるんですか
ちなみにテキストファイルにコード書いてShift_JISで保存・実行しても文字化けしました

444 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 01:25:28 ]
>C:\>gosh -V
>Gauche scheme interpreter, version 0.8.13 [utf-8]

>ちなみにテキストファイルにコード書いてShift_JISで保存・実行しても文字化けしました

>>[utf-8]

445 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 01:55:19 ]
>>444
UTF-8で保存してみたけどやっぱりダメでした

D:\>gosh test.scm
縺薙s縺ォ縺。縺ッ


あとコマンドプロンプトでそのままコード書いてもやっぱり文字化けですから
これは不具合というか実験中ということで未対応なんでしょうね



446 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 01:57:39 ]
ちがいます

447 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 02:07:37 ]
そうですか

448 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 02:27:03 ]
>>445
どのWindowsを使ってるかは知らないが、コマンドプロンプトで、
UTF-8でエンコードされた日本語が、正常に表示されると思った根拠は?

449 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 02:48:12 ]
>>445
コマンドプロンプトに、UTF-8でエンコードされた「こんにちは」を出力すると、
そう表示されるな。

(use gauche.charconv)
(print (ces-convert "こんにちは" 'utf-8 'sjis))

お前、ネイティブエンコーディングって何か理解してないだろ?

450 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:29:34 ]
あっ、なるほど
449さんのコードをUTF-8で保存し、実行すると正しく表示されました
Shift_JISで保存し、実行すると文字化けしました

コマンドプロンプトは基本Shift_JISってことですね
(ちなみにVistaもXPも同じ結果になるぽ)

ネイティブエンコーディングってググってもよくわからないですけど、
言語自体の基本となる文字コードのことでしょうか?
Gaucheの場合、UTF-8ですよね

コマンドプロンプトで直接コードを入力するとShift_JISのコードになってしまう
そのコードをGaucheがUTF-8で解釈して(この時点で文字化け)、
得た結果をさらにShift_JISとして出力されるから・・・・
わけわからないことになりますが・・・

451 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:33:43 ]
そこまで判ってて、なぜ「わけわからない」になるのか、わけわからないw

452 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:56:00 ]
>>450
理解したみたいなので、詳しくは書かないけど、
言語自体というか、処理系が内部で使う文字コードのこと。
Gaucheの場合、EUC-JPやUTF-8、ShiftJISなどから選べる。
それで、お前さんの使ってるGaucheはUTF-8でコンパイルされてる。

確かに、Windowsのコマンドプロンプトから使うには不便だろうな。
configureに--enable-multibyte=sjisを指定してコンパイルし直すか、
Emacs経由で使った方がいいと思うぞ。

ttp://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox

453 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:43:32 ]
>>452
UTF-8でビルドした犯人は俺だ。
でもShift_JISでビルドしたものを配布すると他国の人が困るんじゃないかな。
それともGauche-mingw-0.8.13-sjis.exe とかを作る?

454 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:44:57 ]
>>451
毒を出しすぎ。

455 名前:UTF‐8はXML標準…でも日本語「だけ」苦手?(ТΤ mailto:sage [2008/06/11(水) 10:18:00 ]
LISPをざっとみた感想です;

「直感的には」わかりにくかったけれど、
「印欧語話者の生成文法で言う言語本能って
 だいたいこんな感じなんじゃないか?」と思った。
(英語で隠れてるが、ドイツ語は剥き出し?)
→この「発想パターン」は何度でも「来る」。

私は参照(接続/冠詞)型主語言語話者でなくて
近傍(焦点‐集合操作)型主語言語(日本語)話者w
集合操作による構文は経路‐直線的間接参照端点:
 「静的・直線的な論理」:印欧語族の構文法とは違う。
(ドジスンの指摘したとおり論理対象空間は本来動的で、
 各所で前提が違う方が普通だから、直線化は不可能。)

=英語的言語感覚でなら「直感的に使える優秀な言語」。

英語(印欧語)センスを鍛えようw ゎぁぃ モレオワタ(AA略)



456 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:30:34 ]
個人的には、Lispは「言語」ではないと思ってる。
図形、地図、表、レゴブロック、そういったもの達のほうにずっと近い。

だから>>455を読んで、日本語の話者だから戸惑うのではなく、
言語に触れるモードで触れるから戸惑うのではないか、みたいなことを感じた。

457 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:52:23 ]
黒板に自然法則とか書く時はそれでいい
プログラマの意図が分かるように書きたいときは、言語っぽくないと困る

458 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:09:57 ]
>>455
日本語もまともに書けないのはよくわかった。

459 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:50:18 ]
>>458
自分の読解力のなさを棚にあげるのはやめようぜ

460 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:56:30 ]
>>455
そんじゃ、印欧語話者の間でPy(ピー)が人気なのは何で?素朴な疑問〜


461 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:03:57 ]
というか、国際的にもLisp/Schemeは日本では大人気。

462 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:04:09 ]
>>469
ほう、なら455を日本語で説明してくれんか?
3行目から出てくる括弧の使い方から。
特攻の拓みたいに特殊な言語かと思ったよ。

463 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:04:37 ]
ごめん459だった。

464 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:14:22 ]
「直感的には」わかりにくかったけれど、
→ 直感的には判りにくいけれど、
「印欧語話者の生成文法で言う言語本能ってだいたいこんな感じなんじゃないか?」と思った。
→ 印欧語話者の生成文法で言う「言語本能」って、大体こんな感じなんじゃないか?と思った。


465 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:54:50 ]
>>453
Windowsのことはよく知らないんだけど、入出力コードはカレントロケールに合わせる
みたいなことって難しいの?



466 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:56:52 ]
>>459
俺も>>455が何を言いたいのか理解できなかった。
読解力無いのかなあ。

467 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:05:44 ]
>>464
5行目以降もまるで判らんので、その調子で翻訳お願いしますね。>459
こんな物を読解する能力なら不要だと確信してるけど、
>>456でいきなり会話が成立した(らしい)事が、本当に不思議でしょうがない。


468 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:08:50 ]
LISP使いはスノッブが多いな
GEBとかメタマジックゲーム読んで悦に入ってそう

469 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:23:47 ]
コンプレクッスですか

470 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:24:44 ]
>>455が理解できない一人でーす。

>>461
「国際的にも」「日本では」
国際的なのか、日本だけなのか、はっきりしる!
…みたいな日本語の乱れについての話題なのかな?今は。
外国人が一生懸命コミュニケーションしようとする試み
なのかもしれないけど、漢字ひらがな並べれば良い、って物じゃないんです。
半端に学ばれたままだと相手を不愉快にさせますよ。

471 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:32:23 ]
2ちゃんの定型文だけはしっかり使うガイジンかよw
字は読めないけど日本のマンガには詳しい、みたいな。

472 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:43:03 ]
いまのとこ一方的に文章吐き出す機能しかないみたいだから
受け答えは期待出来ないと思う

473 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:34:47 ]
>>465
このへんに問題点が書かれている。
practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aWindows%2fVC%2b%2b%3alog%3aold_2007#H-1ctgw0n
これはVC++の話だけどMinGWも同様と思われる。


474 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:37:14 ]
>>462
俺も理解できないんだが、
>>456が回答してるんだから
理解できる文章なんだろ。
俺たちが読解力不足ってだけで。
と思っただけ。

475 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:40:11 ]
文章を理解したのではなく、その他の能力(ESPなど)を用いたのではないかと思う



476 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:06:49 ]
文章はともかく言葉の意味がわからない
言語学用語なのかな?
あるいはLispを齧ったばかりの455さんが戯れに組んだELIZAじゃないだろうなw

477 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:08:45 ]
455、人気者だなw

478 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:19:09 ]
>>450
MS-Windows使わない人なんでハズしている可能性あるが…

この端末エミュレータで解決できんかね?
実行するコマンドの文字コード指定できるみたいだが。
ja.poderosa.org/

Win32のコンソールAPIは最低限の依存で済ませているみたい。
Gaucheもそうだろうから、利用できるんじゃないか。

479 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:02:49 ]
Lispは素晴らしい言語だと思うのですが
Lispが生き残ってるのはEmacsのおかげ
実用には耐えないが一部ハッカーの趣味で使われている
など否定的な意見のみが見られてイマイチ本気になれません
Lispで作られたアプリケーションを教えていただけないでしょうか

480 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:05:39 ]
マルチかよ

481 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:08:28 ]
これは酷い

482 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:29:13 ]
>>455-479の人気に嫉妬


483 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:30:39 ]
【入門】Common Lisp その4【質問よろず】
pc11.2ch.net/test/read.cgi/tech/1201402366/860

860 名前:入ってしまえば天国なんだね…。[sage] 投稿日:2008/06/11(水) 11:01:38
LISPに最初から挫折しそうになって、あちこち見ています。

使用者例が少なすぎて発想パターンを断言できないけど、
思考‐発想タイミングから言えば基本的に敷居「だけ」が
高い言語のようだし、初心者を甘やかしても良さそう。

ところで、この言語で言えば印欧語族のロシア語みたいな
性格を見て今、ぐぐってみたんだが…ちょw大当たりww
これは…すごいのはキャラが立ってるLISPだなwww

これが、印欧語族の中では英語的なC言語系だと…
ぐぐってみた…ごめん、もう何も言う事ないwwww
(英語は「敬語」を始め、高度習得が困難です。)

対照的すぐる…(もうちょいがんばれば、あるいは…?



484 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:30:42 ]
>>479
無理して本気になる必要ないよ。
好きなことだけ本気でやればいい。
仕事なら話は別だけどね。

485 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:33:54 ]
>>474
おいおい、弁解するのはかまわないけど、
勝手に「俺たち」で括るのはやめてくれよ。
お前みたいな言う事がコロコロ変わる幼稚な奴と
一緒にされたら気分悪いだろ。




486 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:36:15 ]
ブログペットやマルチにいちいちマジレスする必要もないと思うんだ。(´・ω・`)

487 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:04:32 ]
>>479
これはひどいww

488 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:41:12 ]
>>485
必死すぎw

489 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:57:30 ]
>>488
必死だから何だ?
マジで気持ち悪いからな。お前も含めて。
書き逃げばっかりしてないで意見があるなら書けよ。

490 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:32:58 ]
www.inf.hs-zigr.de/~wagenkn/PP-Buch/

#!C:/Programme/PLT/mzscheme -r

(require (lib "cgi.ss" "net"))

(display "content-type: text/html") (newline)
(newline)

(display "<HTML>")(newline)

(display "<HEAD><TITLE>cgi-script's response</TITLE></HEAD>")(newline)

(display "<BODY>")(newline)

(display "Hello, I'm Mr. ")
(display (extract-binding/single 'surname (get-bindings)))
(display ". <BR>")(newline)
(display "Just call me ")(display (extract-binding/single "firstname" (get-bindings)))
(display ". <BR>")(newline)

(display "</BODY>")(newline)

(display "</HTML>")(newline)

491 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:55:25 ]
(define λlambda)

492 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:51:48 ]
lambdaは構文だからdefine-syntaxやdefine-macroにしたほうがポータブル

493 名前:デフォルトの名無しさん [2008/06/12(木) 01:55:43 ]
scheme初心者なんだけどほんとに再帰って難しい
入門書読んでて再帰の便利さはなんとなく伝わったけど・・・

やっぱ上級者になると普通に使えるんですよね
俺ってやっぱりダメな子・・・

         |        |/(-_-)\|
          |        |  ∩ ∩   |
          |           ̄ ̄ ̄ ̄ ̄
        :::, ―――、
       ::::/./^^^^^^'vl
     :::::::| | /  \ ||
      :::::::(sl rェ , rェ |') ウツダ
      :::::゙ゝ、 -  ノ
     :::::/ l  ̄ ̄lヽ
     :::::|-|/l⌒l⌒l-|
     :::::\二、_)二ノ _____________
      :::::|||  |:|  |
      /`ー(⌒)(⌒)
     /;;;;;;;;;;;;;;;; ̄;;;;; ̄
   /
 /



494 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:10:18 ]
>493
昔むかし、Pascalの授業の宿題で再帰を使わないと事実上解けない問題を
「再帰呼び出しと言うものを全く知らずに」何とか解こうと悪戦苦闘した
俺よりはマシw。

495 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:14:54 ]
ちなみにその教科書にはその問題が記述されている箇所以前に
再帰呼び出しを説明している部分がほとんど無かった。

今なら考えられない教科書だと思う。



496 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:19:25 ]
極めて教育的な良い教科書だな

497 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:22:45 ]
一行一行その時の値がいくつになるか紙に書いてみたらわかると思う

498 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:23:14 ]
「再帰」という単語をほとんど使わずに
それを記憶に焼き付けさせたのか

499 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:32:13 ]
さらにちなみに俺の場合(Pascalでの再帰の場合)は
見かけ上、同じ名前の変数や関数でもシンタックス(戻り番地など)と
共にスタック上に別もの扱いで次々と積まれて行く事が分かって
ようやく納得が行ったよ。

そこに気づくまでは訳が分からなかった。

500 名前:デフォルトの名無しさん [2008/06/12(木) 02:33:08 ]
ゲームコンテストに出しなさい。
www.tohofuhai.com/  豆腐ゲームコンテスト
kirara111.sakura.ne.jp/  星屑きらら杯
3punge.com/ 3分ゲーコンテスト(今休止中)



501 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:55:49 ]
>>494
昔pascalとくれば東大の学生だったんだな。

502 名前:デフォルトの名無しさん [2008/06/12(木) 03:30:00 ]
Eclipse3.3+Cups使っている人いる?
なんか環境自体が、うまく動いていないような気がするのだが・・・

503 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 03:48:30 ]
再起で解け、ループで解けない問題はない。

504 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 04:16:06 ]
それは「問題」という言葉の意味を取り違えてるのでは。
>>494の思い出話に出てくる「問題」は、あくまで宿題なわけで。
たとえば身も蓋も無い例をいえば、「ただし、ループを使ってはいけない」と書かれた「問題」は、
再帰で解けてもループでは解けないよ。

505 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 08:09:22 ]
>>494 >>499
Pascalの機能として知らなかったのなら話はわかるが、
再帰の概念がわからなかったっていうのは・・・
高校の数学をさぼってたと考えられる。



506 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:30:12 ]
再帰じゃないと解けない問題なんてあるのか?
「再帰を使用せよ」と指定されてないかぎり、なんでもif/gotoで書き直せる
はずなんだが。

507 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:49:54 ]
例:「再帰を使用せよ」って指定された問題

508 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:59:14 ]
Schemeの末尾再帰はむしろgotoに近い機能ですよ
Schemerはgotoを嫌っているわけではないと思います

509 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 10:26:12 ]
ackermann関数を再帰なしで

510 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 10:31:17 ]
現在の有限の記憶域の計算機で計算できるものは再帰なしで計算できる。
配列をスタックと看做してループすれば再帰と等価。
たぶん。
無限の記憶域の場合は等価かどうかはわからない。

511 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 10:44:03 ]
gogo ackermann!!

512 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:21:09 ]
>>510
>配列をスタックと看做してループすれば再帰と等価
それじゃ関数の呼び出し部分を自分で作ってるのと同じじゃないか?

513 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:35:21 ]
>>510 たらい回し関数ってループに展開可能かい?


514 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:01:04 ]
>>512
そう。
端的に言えば再帰を使わずに仮想機械を組む。
その中で仮想言語で再帰的プログラムを組む。
表層言語には再帰は現れず、
データ(仮想言語)に再帰が現れるだけ。
CPUは再帰的ではなく反復的に計算するけど
再帰計算ができるでしょ?
それをソフトウェアでするだけのこと。
再帰的なデータも許さないとなれば
再帰的アルゴリズムが表現できず
チューリング完全でなくなる。

515 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:01:43 ]
Ackもtaraiも可能です。
>>510
無限記憶領域でも等価です。

詳しくは計算理論の入門書で。



516 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:17:31 ]
>>493
上級者になると、ていうより基礎中の基礎。
ドラゴンボールで言えば舞空術。
囲碁で言えばシチョウ。
でもあのポール・グレアムでさえ
プログラムを習いたての頃は反復アルゴリズムしか知らず
再帰を使いたいなどと考えたことはなかったし
(Ansi Common Lisp)
19歳の時には
「たぶんLispを学ぶべきなんだろう。しかしLispはあまりに異質に見える。」
(Lispがそんなにすごいなら ---If Lisp Is So Great---)
などと考えてたんだから
頑張れ!

517 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:17:52 ]
>>503
あたりまえじゃないか。もちろん逆も真。

518 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:30:10 ]
有名な再帰画像

Drosteココア
en.wikipedia.org/wiki/Image:Droste.jpg
メリーミルク
mognavi.jp/image/food/00/01/51/4902705021471.jpg

519 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:34:59 ]
>>493の書き込みを見て、ふと思った。
再帰を見て、わざわざこんなことしなくても・・・と思ってしまう問題が多い。
たまに再帰があって良かったなと思う程度。
僕は、きっとLispに向いてない。


ちなみに、ほとんどLispはできません。

520 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:51:53 ]
>>519だが、連投すまん。
この質問に的確に答えてくれる人がいたら、
みんなの(僕の)ためになるんじゃないかと思って。

たとえば、再帰を使うめっちゃ初歩的な関数lengthがあるよね

(defun length (lst)
(if (null lst)
0
(+ 1 (length (cdr lst)))))

再帰がわからない人って、読むときにlengthって関数の
意味が知りたいのに(わかってないのに)、lengthを使われても
わかるわけないじゃんってことじゃない?

521 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:55:28 ]
その辺について、ANSI Common Lispで言ってたね。
以下、それを引用しているページから引用。

初めのうちは再帰は理解するのが難しいと思う人が多い。
難しいと思ってしまうのは、主に関数に対して誤ったメタファ(比喩)をあてはめていることによる。
人々は関数をマシンの一種ととらえがちである。
原料がパラメータで届き、ほかの関数に下請けに出して処理し、最後に完成品を組み立てて、返り値として出荷する。
関数に対してこのメタファをもっていると、再帰は不可能ということになる。
マシンがどうやって作業を自分自身に下請けに出すのか?
動作中のマシンにはそんな余裕などないじゃないかと思ってしまうことになる。

関数は進行しつつあるプロセスであると見る方が、メタファとしては適当であろう。
再帰はプロセスの中では自然なものである。日常生活でも再帰的なプロセスをよく見る。
たとえば、ヨーロッパ史における人口変化に関心をもっている歴史家を考えてみよう。
資料を調べるプロセスは以下のようなものだろう。

1. 1 つの資料を手に入れる
2. 人口変化に関する情報を探す
3. その資料がほかの役立ちそうな資料に言及していたら、ほかの資料を調べる

このプロセスは理解しやすいものだが、第 3 ステップにより同じプロセスが何度か適用されることがあるので、
再帰的なプロセスになっている。

522 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:00:20 ]
>>520
なるほど、そういう風に悩むのか。

まず、lengthの中のlengthが使われるのはnullでないときだけ、
つまり () に対する length の値は length を使わずに 0 と決まっている。
で、それ以外については length を使うわけだが、だんだん短くなっていつかは 0 が返る。

という具合にステップバイステップで考えていくと判りやすいんじゃないかな。

523 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:02:50 ]
文系の奴は頭だけで理解しようとするからイカン
グダグダ言ってないで手も動かせ

そう言っていた数学の先生がいたとかいないとか
The Little Schemerなんかもそのクチか

524 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:05:57 ]
でもまぁ実際には、理系にとっても「体感」というのは大事だよな。

525 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:20:38 ]
数学的直観って言葉があるくらいだからね。

自分は数列、漸化式が得意で好きだったから、
再帰は何も悩む所がなかった。

実装手法もPコードですぐに理解できた。(東大ではありません>>501)
浮動点による意味づけを知った時には、
漸化式みたいでわくわくした。




526 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:43:07 ]
>>521
名文をありがとう。

>>522
う〜ん、自分流に噛み砕くと、
(1)停止することを確認
(2)cdr部分を取って、空リストになるまでは1足し続ける(lengthの場合)
ってことですかね。

>>525
うらやましい。

527 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:00:29 ]
部分問題に分けて、(car, cdr)
部分問題毎に適切な処理、(1, length)
部分問題の解を統合。(+)
部分問題の収束地点の設定。(null, 0)

分割統治法の一番極端な形、一要素とそれ以外に分ける。
後は下請け(再帰的関数呼出し)に任せる

528 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:27:08 ]
いちいちcarとかcdrみたいな「処理」で取り出させるのが前時代的なんだよなー
LISt Processorなのにパターンマッチが標準で無いってどういうことよ

529 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:28:49 ]
>>528
簡単に作れるからでは?

530 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:31:19 ]
>>529
簡単に作れるものほど言語が準備すべきだと俺は思う。
そうでないと人によってそれぞれの実装ができてしまって
言語の「中に」バベルの塔ができちゃうからね(実際Lispはそうなっちゃってるのでは?)

531 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:35:42 ]
パターンマッチこそが言語内言語なんだよね。
汎用のパターンマッチを使うよりも効率的な専用マッチャーが簡単に書けるから、
必要性が低いのだ。正規表現があまり使われないのも、だいたい同じ理由だ。

532 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:40:44 ]
処理系毎の拡張で用意されてるでしょ

533 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:43:07 ]
汎用のPrologインタプリタでさえ、Lispなら100行くらいで書けるからなあ。

534 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:44:27 ]
>>528
君の考える「パターンマッチ」の具体的な仕様と使用例を示してくれると、
より有意義な議論ができると思う。

535 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:51:19 ]
パターンマッチって分岐と分解を同時に行う処理だと思ってる
大抵は分岐の内容に応じてリストを分解するから一度に処理するのは適切な抽象化なはず
下にリストの内容を1だったら2、2だったら5、それ以外だったらそのままにして変換する関数を
書いてみたがどうみてもパターンマッチ版の方がわかりやすい(どうやってパターンマッチを実装するのかは
しらないけど。あとmap使えというのは禁句)
みんなのLispプログラムもみなおしてみたらパターンマッチを使った方がスッキリする部分が多くあるのでは?
このスレにもパターンマッチを「ふわふわしたおまけ」としかみなしてない人が結構多いと思うから
俺のレスがパターンマッチを使うきっかけになってくれれば幸いだ。


(defun (hoge lst)
(cond ((eq (car lst) 1)
(cons 2 (hoge (cdr lst))))
((eq (car lst) 2)
(cons 5 (hoge (cdr lst))))
((and (not (null? lst)) (list? lst))
(cons (car lst) (hoge (cdr lst))))
(else
nil)))

(defun (hoge lst)
(pm lst
((| 1 xr)
(cons 2 (hoge xr)))
((| 2 xr)
(cons 5 (hoge xr)))
((| x xr)
(cons x (hoge xr)))
(else
nil)))



536 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:59:53 ]
>>535
後者が簡潔だが、前者が判りやすい。おそらく効率は前者が勝る。
「ふわふわしたおまけ」とは思わないけど、言語の中に別の言語を導入するような
気持ち悪さは感じる。

まあ好きな人は使えば良いのでは?という程度かなあ。

537 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:20:59 ]
>>535
CL?Scheme?

538 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:27:26 ]
俺パターンマッチ入りの俺Lisp言語だろw

539 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:20:34 ]
パターンマッチはなじむと便利
可読性とかは知らんけど

540 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:22:11 ]
まあ関数型言語だとおなじみ

541 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:25:28 ]
頑張れば CLtL3 に入れてもらえるかもw

542 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:28:51 ]
535のプログラムみて思ったんだけど
Listだけどnilじゃないのを一発で判別する関数ってないんかね

543 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:05:06 ]
consp
pair?

544 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:41:28 ]
来月「Practical Common Lisp」の訳書が出るっぽい
www.bk1.jp/product/02997001

545 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:47:48 ]
>>544
原著よりも安いのか。
園城さんって、LispUser.netの人ですね。



546 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:54:10 ]
>>543
「List」だけどnilじゃない

547 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:37:44 ]
>>528
いろいろな人が考えたけど、
S式とうまくマッチするのがないってのが現状。
これだけ時間がかかって見つからないからないんだと思う。

define-syntaxは一部カバーしていると思うが。

548 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:57:14 ]
CLOSがパターンマッチみたいなものだと思うのですが

549 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:32:04 ]
>>547
昔から、
(match '(a b . c) '(1 2 3 4 5)) =>((a 1) (b 2) (c (3 4 5)))
(match-let (a b . c) '(1 2 3 4 5) (list a b c)) =>(1 2 (3 4 5))
みたいなのや、prologのunification辺りはほとんどの人間が
自分の物を持ってると思うけどな。
こういうのをマクロにしてパターンを定数で取れば特殊化もできる。
今は組み込みにするのが流行だろうけど、
LISP系ならパターンマッチはライブラリで自然に実装できる範囲だから、
あえて入れなかったのでは。

550 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:39:31 ]
>>546
nilは「List」だけど。
おまいのListの定義がおかしいだけ。

素人増えましたな。

551 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:46:00 ]
Listだけどnilじゃないのを一発で判別する関数
(define (non-nil-list? x)
 (and (not (null? x))
    (list? x)))
が組み込みであるか?てことでしょ。
これはSchemeのコードだけど。
コンスとリストを混同してるのでは?

552 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:55:31 ]
(and (consp x) (listp x))を一発で判別したい

conspだけでいいのでは

よくない

?←今このへん

553 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:56:48 ]
自分で述語用意すればいいじゃん・・。


554 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:04:15 ]
点対神経症だろw

555 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:07:37 ]
CLの listp (点対でも真)とSchemeの list? (点対だと偽)の差が混乱を招いているのでは?



556 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:25:34 ]
>>535みたいなどこかの俺言語で育っちゃった人は
一度まじめにどっちかで矯正した方がいいよ。


557 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:34:25 ]
狼に拾われたがパンダに育てられて観賞用に


558 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:00:34 ]
どっかってどこ?
MITとかUCBあたり??

559 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:02:26 ]
このスレとかでいいんじゃね?w

560 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:07:30 ]
535の脳内のどこか

561 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:30:21 ]
>>556
これから独学でLisp習おうと思ってる。
今までプログラミング言語を真っ当に習ったことはなくUNIXのBシェルスクリプトが
ちょっと使えるくらい。

こんな自分が、あとから矯正の必要がないように正しく学ぶためにはどうすればいいですか?


562 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:35:00 ]
>>561
訳書は見てないけど >>544 なんて良いんじゃないかな。
実用的な例題で勉強できるから飽きないと思うよ。

563 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:37:43 ]
>>561
わたしゃ独学でCLを学んでたけど、
定番の本だけはきっちり抑えておくとそこから、書き方を学ぶことができるよ。
もちろん、本に載ってなくって、知っておいたほうがよい方法やスキルというのも
あるけど、それは実際に勉強会などを通じて人とのコミュニケーションをとっていく
事からだと思うな。

別に俺様言語でもいいけどさ。矯正は必要な場合はあるけど、実際に回りにschemer
がいるかといえば別の問題があるからね。その点は指摘してる>>556というのは
恵まれた環境を持っているといえるね。最近はハブサイトもできつつあるから、
独学者にとってもよい時代がくると思うよ。shiroさんのサイトみたいに人が集まってるとこ
ろは自分から積極的に恵まれた環境を作るきっかけにはなるよ。



564 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:40:26 ]
定番ってのは、ANSI Common LispやPractical Common Lisp, PAIPあたりだけど。
オンラインのみで流れているスタイルに対してのよいドキュメントは
先日g000001さんたちがやっていたNorvig and Pitman 1993 (和訳あり)をよんで
みればいい。

565 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:48:07 ]
www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt

これね。これはcommon lispの師匠に進められた文章でもあります。テンプレに含めて
もいいと思う。



566 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:51:18 ]
>>544
ktkr

567 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 07:33:49 ]
>>562-565
thx!

568 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 07:37:36 ]
>>565
その文章はとてもいいよね。
でもおれdeftype使ったプログラムあんまり見たことないんだけど気のせい?

569 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:50:06 ]
>>568
> でもおれdeftype使ったプログラムあんまり見たことないんだけど気のせい?

たしかにみたことがない。 あまりないのはしかたがないかも。
typecaseで場合分けすることや型宣言前提だろうし。


570 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:55:21 ]
俺は情報隠蔽はpackage, CLOSの仕事と割り切ってる。
だから使ったことない。> deftype


571 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:24:51 ]
>>570
微妙にわかるような、わからないような…。
でも、棲み分けだよね。

572 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:00:48 ]
>>565
この文章は俺もよく参考にさせてもらいました。ちなみに原文(英語)はこちら。
www.cs.umd.edu/~nau/cmsc421/norvig-lisp-style.pdf

573 名前:546=551 mailto:sage [2008/06/13(金) 23:36:37 ]
>>555
なるほど。私が不勉強でした。
>>550
失礼しました。

574 名前:デフォルトの名無しさん [2008/06/13(金) 23:57:48 ]
で、結局Cuspは使えるのか?!


575 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:09:21 ]
こういうこと?

(list? '(1 . 2)) ;=> #f
(list? '()) ;=> #t

(define (listp x)
 (and (not (null? x))
    (pair? x)))

(listp '(1 . 2)) ;=> #t
(listp '()) ;=> #f



576 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:14:50 ]
(list? '(1 2)) ;=> #t


(listp '(1 2)) ;=> #t

577 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 05:38:16 ]
まだ理解できてないじゃん
最初からおさらいしたら?

578 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:07:37 ]
(list? '(1 . 2)) ;=> #f
(list? '()) ;=> #t
(list? '(1 2)) ;=> #t

(define (listp x)
 (and (not (null? x))
    (pair? x)))

(listp '(1 . 2)) ;=> #t
(listp '()) ;=> #f
(listp '(1 2)) ;=> #t

(define (non-nil-list? x)
 (and (not (null? x))
    (list? x)))

(non-nil-list? '(1 . 2)) ;=> #f
(non-nil-list? '()) ;=> #f
(non-nil-list? '(1 2)) ;=> #t

579 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:20:00 ]
(define (nil-list? x)
 (not (non-nil-list? x)))

(nil-list? '(1 . 2)) ;=> #f
(nil-list? '()) ;=> #f
(nil-list? '(1 2)) ;=> #t

580 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:21:54 ]
間違えた>>579

(nil-list? '(1 . 2)) ;=> #t
(nil-list? '()) ;=> #t t
(nil-list? '(1 2)) ;=> #f

581 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:11:14 ]
DrScheme ver.4.0キタワ

582 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:24:12 ]
plt-scheme.org/tour.html

583 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:58:53 ]
>>578-580
いちいち無意味なもん貼るな。
自由帳はこちら。>>8



584 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:06:37 ]
>>583
初心者に向かって「いちいち」とか書き込んでるオマエの方が「いちいち」ウザイw

585 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:07:38 ]
初心者は放って置けば消えていくJK。



586 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:21:11 ]
「On Lisp」の「第16章 マクロを定義するマクロ」スゲー

587 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:49:14 ]
>>586
その気になれば作れるようになるよ。:-)

588 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:10:43 ]
>>265のambをlet-syntaxするマクロを書いたら、`...' が衝突した
codepad.org/FhFcRNhU

こうですか?わかりません!
codepad.org/DOhmrD4x

589 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:53:50 ]
>>588
codepad.org/DsQGNTC2

590 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:20:05 ]
>>589
おお
PLTの拡張かと思ったがR6RSに書いてあった。thx

591 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:33:58 ]
【産学連携】京大と日本IBM、大規模交通社会シミュレーションシステムを開発[08/06/11]
news24.2ch.net/test/read.cgi/bizplus/1213353215/
ttp://pc.watch.impress.co.jp/docs/2008/0611/ibm.htm

このシステムで使われてるシナリオ記述言語Qの説明を見ると、Dr.Scheme版が有る。
ttp://www.ai.soc.i.kyoto-u.ac.jp/Q/system_j.htm


592 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:34:24 ]
Dr.Scheme ver.4.0ってset-cdr!が使えないの?

593 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:12:54 ]
>>592
ver372までset-cdr!が使える。
pre399ぐらいでは使えなくなってた。ver4.0は400に相当してるはずで使えないと思う。
正直、不便になった。

594 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:29:46 ]
ということは、実装によってはlist?を定数時間で計算できるな

595 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:10:36 ]
処理系依存の話題で恐縮ですが、Gaucheのオブジェクトシステムについてお聞きしたいです。
スレ違い、または既出だったら申し訳ないです。

用件を言うと、Gaucheのオブジェクトシステムで
スロットに対するアクセス制御は困難でしょうか?
(アクセス制御: C++, Java等にある private / public 的な機構)

現在、「プログラミングGauche」17章のオブジェクトシステムのあたりを読んでます。
自分は、Java->Ruby->(Haskell)->Scheme
とやってきたので、どうもJava的なOOの発想があるようです。
せっかくオブジェクトシステムがあるのだから、
活用しようと思っているのですが、スロットのアクセス制御が無いと不安に思います。
method内だけ参照や変更を許すようなclassを定義したいなぁと思ったのが事の発端です。

「Gauche:スロットアクセス」で検索して出てくるページが参考になったのですが、
マクロとメタオブジェクトプロトコルを駆使してました。

やはり総称関数という機構を取り入れている以上、
単純にスロットをカプセル化はできないですかね?
長文すみませんでした。




596 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:13:54 ]
いわゆるメソッドと違って、総称関数は特定のクラスの所有物じゃないからねえ。
とりあえず、その辺を管理する(指定する)仕掛けがいるわなあ。

597 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:14:38 ]
真面目な長文かけるならこんなゴミ溜めじゃなくてWilikiにでもかきなよ


598 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:18:57 ]
>>595
アクセスコントロールはないです。

599 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:10:07 ]
整備兵 『80%?冗談じゃありません!現状でジオングの性能は100%出せます!!』
シャア  『脚は着いていない』
整備兵 『あんなの飾りです。偉い人にはそれが分からんのですよ!』

600 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:29:04 ]
javaやC++と同じにしたいなら、同じ機構を用意すればいい。
wilikiの連中は、既存のシステムしか使わずに実行時に何かやろうとしてる。
おかしな事になるのは当然。こんなのと付き合う必要はない。
>>595を含め大抵の奴はCLOSモドキなんて望んでない。
javaやC++でコンパイル後に何の情報が残るか考えれば判るはず。
さあ、やるんだ。

601 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:35:07 ]
>>599
元ネタってガンダムなの!?

602 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:47:35 ]
>>600
こうして、アプリケーションと同じ数だけのフレームワークが発明されるのであった。w
(批判ではない。むしろこのあたりがLispの良さであろう。)

603 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 04:07:38 ]
資産の積み重ねができないわけですね
これも数十年経ってもメジャーになれない理由の一つなのかな?

604 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 04:15:06 ]
ANSIに規格がある言語はマイナーとは言えないだろう

605 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 05:03:15 ]
>>595
CLOS系は「そういうもの(アクセス制御は気にしない)」だと思うのが吉。
文化の違い。
隠蔽したいなら、クロージャベースのオブジェクトシステムの方がいいんじゃないかな。




606 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 07:10:05 ]
>>595
CLOSって、Java/C++系とは文化が違いすぎて、private/public/protectの区別がなくても
さほど問題がないよ。この辺は>>605さんの意見とかぶるね。

あの系統のオブジェクトシステムを作るなら、別に作成したほうがいいけど、できればCLOS
の方を利用するように頭の発想を切り替えたほうがいいよ。CLOSのほうが柔軟な制御が
できるのでね。

607 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:00:04 ]
オブジェクトが必ずその名前のスロットを持っているとassertできる状況なら、
それを隠蔽する必要があるとは思えない。

608 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:16:27 ]
CLOS使えだなんて口が裂けても言えん。

609 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:02:11 ]
CLOSは、例えばアクセスコントロールを持つような
別の標準オブジェクトシステムのカーネルになるための
基本オブジェクトシステムとして考案されたが、
いつの間にか標準のオブジェクトシステムの座に着いている。

なんだ使ってみればCLOSのままでええやんってところか。

610 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:06:40 ]
そこでFlavorsですよ。

611 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:27:16 ]
>>609
この辺の事情はbit別冊のCLOS本に書いてある。
たしか井田さんがMLでの議論をまとめてる。

既存のCommonLoopsかFlovorsのどちらの流儀にするか揉めているところに、
汎用のカーネルを考案できないかとの提案があった。

612 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:30:26 ]
>>597
そうですね。是非、そちらの方も活用させて頂きます。
scheme系は、まだ初めてから日が浅いこともあり、
気が引けてました。

>>600
私の不勉強で、どのようにJavaなどと同じ機構を実現するか分かりませんでした。
出直します。ただ、できるだけ独自の機構は避けたいと考えてました。

>>605-607
クロージャベースのオブジェクトシステムだと内部状態は隠蔽できますね。
ただ、CLOSとの相性・一貫性に不安があり、できればGaucheに標準的にある
オブジェクトシステムだけで解決しようと思ってました.
皆さんのおっしゃるように、発想を切り替えてみようと思います。

>>596-608
最後に。皆さん、レスありがとうございました。とても参考になりました。
CLOSと、Java/C++系とは異なる発想でプログラムを設計するという事ですね。
CLOSを実際にもっと使用して、その発想の違いを考えていきたいと思います。

613 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:47:01 ]
人気の言語を作るには ---Being Popular---
practical-scheme.net/trans/being-popular-j.html
を読んで妄想した事。
Lispにシステムハッキング機能を追加したら、インスタントLispマシンの出来上がり!!
Lisp Override your Operating System...

614 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:03:12 ]
>>613
つmovitz

615 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:51:43 ]
>>592-593
LanguageをSwindleに設定したらset-cdr!が使えました。



616 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:13:16 ]
>>615
ver4.0ってR6RSに対応したんだっけ?

617 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:47:57 ]
setq 説得

set-cdr! 説得だああああ!

618 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:54:30 ]
お〜い、山田く〜ん
617の座布団全部とれ!

619 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:34:39 ]
>>616
ほぼR6RSを満たすSchemeや、独自のPLT Schemeなど複数の言語が選べる。
そして、異なる言語で書かれたモジュールをインポートできる。

620 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:41:42 ]
>>616
>ほぼR6RSを満たすSchemeや

まだR6RSに対応できてないの?言語選択はR5RSのままだし。

621 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:12:48 ]
>>620
言語選択は一番上の ``Module'' を選ぶ。
ソース (DrSchemeのウィンドウの上半分) の最初の行に
#!r6rs
次の行に
(import (rnrs))
それ以降の行に定義を書いて
Runのボタンを押す。

622 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:12:34 ]
r6rsモードだと#lang schemeの組み込み関数とかsrfiとか使えなくね?

623 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:48:02 ]
R6RSになって「R5RS用のSRFI」は使えてるの?

624 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:59:04 ]
Revised6 Report on the Algorithmic Language Scheme
www.r6rs.org/final/r6rs.pdf

Revised6 Report on the Algorithmic Language Scheme ― Standard Libraries
www.r6rs.org/final/r6rs-lib.pdf

Revised6 Report on the Algorithmic Language Scheme ― Non-Normative Appendices
www.r6rs.org/final/r6rs-app.pdf

Revised6 Report on the Algorithmic Language Scheme ― Rationale
www.r6rs.org/final/r6rs-rationale.pdf

基本的には上2つがユーザーに重要な情報。
#次のテンプレに入れてください。

625 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:05:05 ]
ちょっと聞きにくい質問なんですが、
R6RSってR5RSとかと比べてどうなんでしょうか。
まだ出たばかりで実装は少ないと思いますが、
今後、多くの処理系で実装が進むのか、
また、ユーザとしてもR6RSへの移行を意識しておくべきなのか、
そういったことです。
ちょっと漠然とした質問でうまくまとめられなくてすみません。



626 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:10:00 ]
>>621
(import (rnrs))
↓↑
(import (rnrs (6)))

どっち?

627 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:14:27 ]
>>621
補足
特殊トークン #!r6rs はソースがR6RS準拠であることを示す。コメント扱い。

628 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:19:16 ]
(import (rms)) かとおもった。

629 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:25:35 ]
slibはちゃんと使える?

630 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:44:36 ]
>>625
R6RS決定時からPLT Scheme、Chez Scheme、Scheme48は近いうちにR6RSを採用すると言われていました。
今回、PLT Schemeが出してきたので、先行していたScheme48に続いて2つ目の実装かな。
Chez Scheme v7.4は部分的にR6RSのプリミティブが使えるようになってますが「will soon support R6RS standard.」となってるので、
次のアップデートで完全対応だと思います。

自分も含めたユーザーは実装が出揃って、ある程度比較記事などを見たうえで行動してもいいと思います。
今後、色々な問題点が表面化するでしょうから。
うまくいけばR6RS対応の色々な処理系に対するポータビリティは高くなる「ハズ」ですがw

631 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:19:15 ]
>>628
Join us now and share the software;
You'll be free, hackers, you'll be free.
って超音痴で歌うのか!

632 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:20:10 ]
Scheme48ってR6RSにもう対応してましたっけ?

633 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:22:20 ]
Fmmm..... なぜあなたは超音痴だと確信したのですか?

634 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:32:05 ]
>>633
一度聴いた事あるです orz


635 名前:デフォルトの名無しさん [2008/06/15(日) 21:43:46 ]
>>631
>Join us now and share the software;
>You'll be free, hackers, you'll be free.
これか…… jp.youtube.com/watch?v=9sJUDx7iEJw&NR=1



636 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:09:42 ]
>>622
(import
(rnrs)
(prefix (scheme base) scheme:))

637 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:19:10 ]
Gauche-gl入りバージョンをリリースしました。(Gauchebox-0.8.13-box2.exe)
sourceforge.net/project/showfiles.php?group_id=25227&package_id=275266&release_id=607291


638 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:20:02 ]
ガウチェ(・∀・)

639 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:56:24 ]
OpenBSDでClispをビルドすると
なぜか実行ファイル作成機能が壊れてしまうので
ソースを追ってみたのですが
とても不思議な現象に遭遇しました。
実行ファイルを指すファイルディスクリプタから
readで読み込む部分の前に
読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと
EFAULTが起こります。
読み込み先メモリに4000バイト間隔で1バイトの読み込みOR書き込みを行ってから
readすれば正常に動作します。
なぜでしょう?
ちなみに4000バイト・EFAULTというのはi386プロセッサの場合で
armプロセッサの場合はそれぞれ3999バイト・EACCESになります。

640 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:57:20 ]
>639
まぁとりあえずスレ鯛みておちつけ

641 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:13:55 ]
CLispのビルドの問題なのでスレ違いじゃないと思ったのですが…

642 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:16:41 ]
つか、もし本当なら OS のバグ(つまりスレチ)じゃね?

643 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:22:38 ]
CLispならCommon Lispスレ行って聞いてみたらどう?
pc11.2ch.net/test/read.cgi/tech/1201402366/

644 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:29:25 ]
別にすれ違いだとは思わないよ。ただし、それにコメントができる人はほとんどいなさそう。

645 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:36:41 ]
>>644
>ただし、それにコメントができる人はほとんどいなさそう。
あら、そう。



646 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:39:10 ]
>>644
氏ね

647 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:40:37 ]
わかってるくせにwww

648 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:42:01 ]
OpenBSDのスレで聞けや、クズ

649 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:44:43 ]
いや、質問っていうよりは、報告したかったんじゃないのかなw

650 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:57:29 ]
言葉の使い方もシランガキが集まってきたな。


651 名前:デフォルトの名無しさん [2008/06/16(月) 23:58:43 ]
>>639
>readで読み込む部分の前に
>読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと
>EFAULTが起こります。

部分の前に
一度は少なくとも

はどういう意味でしょうか? 文章を読みこなせません。

652 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:18:00 ]
仮割り当て状態のページに I/O するとエラーになるというんだろ。
本当なら OpenBSD のバグなので、そちら方面で報告すべし。

653 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:37:10 ]
別にすれ違いだとは思わないよ。
第一、そんなことも知らないと見下されてるわけか。バカにされたもんだな。
そういうことを聞いてるんじゃないってことがなぜ伝わらないのか。
情報があるなら教えて欲しい、それだけだ。

654 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:54:56 ]
>>65
最初の3行は不要
なぜ馬鹿にされたのか、なぜ伝わらなかったのかを考えたほうがいい

655 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:55:27 ]
>>654>>653



656 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:20:29 ]
>>636
でもこんなんなる

(car (scheme:list 1 2 3))
mcar: expects argument of type <mutable-pair>; given (1 2 3)

(scheme:car (list 1 2 3))
car: expects argument of type <pair>; given {1 2 3}

657 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:18:35 ]
>>654
> なぜ馬鹿にされたのか、なぜ伝わらなかったのか
運悪くこのスレに馬鹿が集まっていたからですね。

658 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:12:40 ]
運の悪い奴って何やっても駄目だよな〜

659 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:56:49 ]
>>656
list と pair では型が違うと言ってるみたいだね。

660 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:12:29 ]
(scheme:car ((scheme:list 1 2 3))

とか

(car (list 1 2 3))

なら動くんだろ?

661 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 15:33:58 ]
ネタか・・・

662 名前:639 mailto:sage [2008/06/17(火) 17:55:27 ]
具体的にはspvw_memfile.cの1196-1198行目(clisp-2.45の場合)に
READ(&old_fsubr_tab,sizeof(fsubr_tab));
READ(&old_pseudofun_tab,sizeof(pseudofun_tab));
READ(&symbol_tab,sizeof(symbol_tab));
というコードがあるのですが、
3つ目のREADマクロ中のread(2)が失敗し、
i386ならEFAULTが、armならEACCESがerrnoにセットされます。
ところが3つ目のREADマクロの前に
{
int i;
for ( i = 0 ; i < sizeof(symbol_tab) ; i += 4000 /* i386の場合。armの場合は3999 */ )
((char *) &symbol_tab)[ i ] = '!'; /* '!'という値には意味はありません */
}
というコードを挿入すればread(2)は失敗しません。
i386なら4001以上、armなら4000以上のiの増分ではread(2)が失敗します。
symbol_tabというのはマクロで、実体はsymbol_tab_dataを指していますが
old_fsubr_tabとold_pseudofun_tabはbssセクションに置かれているのに対し
symbol_tab_dataはdataセクションに置かれているという違いがあります。

663 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:07:22 ]
>>657-658
運の悪い馬鹿は自己申告しなくて良し。

664 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:13:29 ]
>>663
お前という馬鹿がここにいるのは>>657-658の運のせいではないですよ^^

665 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:23:09 ]
>>664
常駐乙



666 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:46:40 ]
運の悪い奴は何やっても駄目、という言葉を実感しつつあるw

667 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:11:46 ]
適当な実感でものを判断する奴も全然駄目だけどねw

668 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:28:43 ]
「情報があるなら教えて欲しい、それだけ」ならじっくり待ってろよ、まったく。

669 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:31:29 ]
>>662
そこまで追ったのなら、馬鹿はほっといて、短い(CLISPに依存しない)再現プログラムを
作ってOpenBSDの人たちへ報告するのが良いと思う。

670 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:47:23 ]
>>662
その情報、ちゃんとOpenBSDの中の人たちに連絡したら感謝されると思うよ。

671 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:31:58 ]
>>656, >>660
ネタかと思ったけど、R6RSに慣れるまで大変ですねw
PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。
mutable(変更可能)なペアは別のデータ型として提供されてるようです。
たぶん>>656, >>660で言ってることがそれだと思います。
手持ちのプログラムを食わせてみたら同様の文句を言われましたw
当面、372のままで行きます orz

672 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:40:50 ]
ようわからんが、C→C++でconstの扱いが変わったような感じなのかな。

673 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:50:10 ]
C++/CLIにポインタが2種類あるような感じだな

674 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:56:59 ]
immutableなconsセルというと後藤英一氏のHLISPが元祖だろうな。

675 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:37:18 ]
>>PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。
これ、PLTのどっかに「どうなるかわかんないけど、取り合えずやってみるぽ」って感じの文章なかったっけ?
PLTさんお願いです、今回だけで止めてください m(_ _)m



676 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:47:56 ]
immutableにして何か利点はあるんですかね?
GPU対応とかconcurrent対応ぐらいしか思いつかない。う〜む。

677 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:00:52 ]
こうやって解決しないの?
(define cons mcons)
(define set-car! set-mcar!)
(define set-cdr! set-mcdr!)

678 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:15:13 ]
Schemeはペアはimmutableでも良いんじゃないかなあ。
そんなに破壊的操作してるもんかね。

679 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 03:27:38 ]
>>678
Streamを使えば破壊的操作を使うから多いと思う。

680 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 07:39:44 ]
>> 677
(define cons mcons)

define-values: cannot change constant identifier: cons

エラーになります orz

681 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:02:56 ]
>>680
マクロは?

682 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:21:59 ]
DrSchemeはネタの巣窟ですね
MzSchemeなら問題ないです

683 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:03:53 ]
>>675
これ?
blog.plt-scheme.org/2007/11/getting-rid-of-set-car-and-set-cdr.html

684 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:35:55 ]
>>683
それだ!サンクス
で、結局やることになっちゃったんだな。4.0でこうなったってことは...
そりゃ自分で書いたコードなら直すのも簡単だけどね orz

685 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:26:10 ]
set-car!: name is not defined, not a parameter, and not a primitive name
set-mcar!: name is not defined, not a parameter, and not a primitive name

使えない orz



686 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:29:02 ]
>>681
これで一応動く(PrettyBigモードとか)。SICPの学習には不便しないだろう。
(ただしR6RSとは共存出来ない。)

(define-syntax cons
(syntax-rules ()
((_ a b) (mcons a b))))

(define-syntax set-car!
(syntax-rules ()
((_ a b) (set-mcar! a b))))

(define-syntax set-cdr!
(syntax-rules ()
((_ a b) (set-mcdr! a b))))

687 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:55:29 ]
;こんな感じ。
;pre.plt-scheme.org/plt/doc/reference/mpairs.html
(require scheme/mpair)

(define-syntax cons
(syntax-rules ()
((_ a b) (mcons a b))))

(define-syntax set-car!
(syntax-rules ()
((_ a b) (set-mcar! a b))))

(define-syntax set-cdr!
(syntax-rules ()
((_ a b) (set-mcdr! a b))))

(define-syntax list
(syntax-rules ()
((_ a ...) (mlist a ...))))

(define Qoo (list 3 4))
(set-car! Qoo '(5 6))
(set-cdr! Qoo '(7 8))
(display Qoo) ; => {(5 6) . (7 8)}

688 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:07:21 ]
>>687
サンクス!
でも、こんどは
(map cons lst1 lst2)
が大破しました... "orz"
それなりの混乱が予想されるのにこうなったって事は何か良い見返りがあるはずだよね...

「隊長!comp.lang.schemeのアナウンスからPLT方面に潜入して偵察を試みてみます。自分が帰ってこないときは英語が解読できなくて玉砕したと思ってください orz」

689 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:10:45 ]
(define Qoo (list ))
(mlist? Qoo) ; => #t
(display Qoo) ; => () なぜか{}にはならない。

690 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:13:11 ]
>>688
pre.plt-scheme.org/plt/doc/reference/mpairs.html
ココの関数はマクロで修正しないとダメポ。
mmapが orz

691 名前:688 mailto:sage [2008/06/18(水) 16:24:41 ]
隊長!自分は現在683より報告のあったBLOGに到着しました。
驚くことにcomp.lang.schemeのアナウンスにはそれらしい情報は例のBLOGにしかありませんでした。
さらに驚くことにBLOGに対するコメントは好意的なものばかりのようです。
もしかして、自分はバカなのでしょうか "orz"



692 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:31:12 ]
Schemeは「破壊的操作の時だけアホになります」って言ってるみたいだ…

cons
せぇっと!
car
りば〜すぅ!
せっとくだー!
eq?

みたいな。

693 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:33:42 ]
(define-syntax map
(syntax-rules ()
((_ a b ...) (mmap a b ...))))

(map display (list 1 2 3 4 5)) ; => 12345{#<void> #<void> #<void> #<void> #<void>}

あれ?うまくいかない?

694 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:36:22 ]
(define-syntax map
(syntax-rules ()
((_ a b ...) (mmap a b ...))))

(map (lambda (x)(* x x)) (list 1 2 3 4)) ; => {1 4 9 16}
大丈夫らしい。

695 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:39:33 ]
正直、Schemeを名乗らないで別の名前を付けてくれと思った。



696 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:40:56 ]
Scheme 2.0 って感じだなw

697 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:45:05 ]
今後は従来のをScheme/NewJerseyとかダッサい呼び方するんだろうかw

698 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:49:23 ]
隊長!
BLOGにはimmutableなpairでないと

(define l (list 1 2 3 4 5))
(map (lambda (x) (set-cdr! (cddr l) 5)) l)

が変になるって書いてあるから試してみました。

Gauche(R5RS)
(#<undef> #<undef> #<undef>)
たしかにちょっと変。

Petite Chez(R5RS)
(#<void> #<void> #<void> #<void> #<void>)
たしかにちょっと変。

Guile(R5RS)
(#<unspecified> #<unspecified> #<unspecified>)
たしかにちょっと変。


699 名前:698 mailto:sage [2008/06/18(水) 16:50:09 ]
でもR6RSな処理系ではちゃんとエラーになっております。

Ikarus(R6RS)
Unhandled exception
Condition components:
1. &assertion
2. &who: map
3. &message: "list was altered"

Larceny(R6RS)
Error: car: 5 is not a pair.

Ypsilon(R6RS)
error in car: expected pair, but got 5

immutableなpairってやつはR6RSで必要になったから導入したわけじゃないのでしょうか?
自分はちょっと混乱しています "orz"


700 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:54:50 ]
>>698
d。俺が馬鹿だったw

701 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:57:25 ]
安全側に改良された感じだな。互換性無視については確信犯だろう。w

702 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:00:02 ]
Immutive Schemeって評判いいの?

703 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:02:15 ]
>>698>>699
それはmapの安全性の問題では?

704 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:05:25 ]
>>698のGaucheは、

gosh> (map (lambda (x) x) '(1 2 3 . 5))
(1 2 3)

と整合。set-cdr!の結果が#<undef>

Guile 1.8.3は、
> standard input:1:1: In procedure map in expression (map (lambda # x) (quote #)):
> standard input:1:1: Wrong type argument in position 2: (1 2 3 . 5)
> ABORT: (wrong-type-arg)
でエラー。


705 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:10:32 ]
immutable list相手なら、
(define (map f x)
(cond ((not (pair x)) (error "not pair"))
((null? x) ())
(#t (cons (f (car x)) (map f (cdr x))))))
の最初のチェックが不要になることが静的に分かるケースがあるわけですね。



706 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:13:16 ]
(define-syntax car
(syntax-rules ()
((_ a) (mcar a))))

(define-syntax cdr
(syntax-rules ()
((_ a) (mcdr a))))

707 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:19:18 ]
あまり抵抗せずに郷に入れば郷に従うのが良いのでは?
昔の教科書を一字一句変えずに動かしたいという理由が判らん。

708 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:40:54 ]
(define-syntax pair?
(syntax-rules ()
((_ a ) (mpair? a ))))

709 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:48:02 ]
お言葉ですが >>707 さん、自分がDrSchemeを使うのは「昔の教科書を一字一句変えずに動かしたい」からなのです><
バカと呼んでもらってかまいません...
やはりv372への「戦略的な撤退」でしょうか "orz"

710 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:58:15 ]
目的に合った処理系を。

711 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:02:27 ]
>>710
そうだよね。勉強が目的なのにそれ以外にエネルギー使うの無駄が多すぎる。
読み終わってから試行錯誤したほうがいいんじゃない?

712 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:31:53 ]
R"5"RSの教科書的実装ならばScheme48がいいかも
近々R6RS準拠になる予定だし

713 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:32:07 ]
immutableにした理由って、webアプリのインジェクション対策?

714 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:35:24 ]
>>713
なわけないw

715 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:36:15 ]
>>712
SICPはR5RSやR6RSってわけじゃないんだ。
DrScheme v372以前のPrettyBig modeが一番そのままで書けると思う。
他の処理系だとbegin使えとか言われる表記が満載>SICP



716 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:37:16 ]
新しいDrSchemeってドキュメントにThreadの項目が増えたの?

717 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:38:07 ]
>>710 >>711 >>712 >>715
みなさんご親切にありがとうございます m(_ _)m
どうやら「メジャーバージョンアップ!」しかも「R6RSに触れられる!」とあって舞い上がってしまったようです...
でも、今の自分はDrSchemeのマクロステッパーなしでは生きられません "orz"
耐え難きを耐え、しばらくの間4.0は封印しておきます><

718 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:38:18 ]
SICPならMIT-Schemeを使うとか

最近のMITはMzSchemeらしいけど

719 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:42:44 ]
>>718
つまりDrSchemeのMzSchemeモードと中身は同じ。

720 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:43:01 ]
>>718
ありがとうございます。MIT-Scheme使ってみたいんですが...
以前試した時はバイナリーが動かなくて、ビルドもできなくてあきらめてました (orz)
カーネルも新しくなったからもう一回挑戦してみようかと思います><b

721 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:15:24 ]
最近のMITのSchemeはPythonじゃないの?

722 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:46:58 ]
最近のMITのSchemeがPythonだとは初耳だw

723 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:37:58 ]
Scheme初心者の俺が通りますよ
質問なんだけど、トップレベルってなんか特別なの?

(define cc #f)

;A
(display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
(display 'fuga)
(cc 'moga)

;B
(begin
(display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
(display 'fuga)
(cc 'moga)
)

トップレベルでこーやったとき、Aが無限ループにならないのにBが無限ループになるのが理解できないの...

724 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:45:37 ]
>>723
継続はトップレベルをまたげない処理系が多い。(実装依存)
そういう意味ではトップレベルは特別。

725 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:50:50 ]
>>724
そーなのかーありがとー
実装依存か 処理系もかかないかんかったね がうちぇです もう一度いいます がうちぇです



726 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:51:51 ]
あれてきたときにスルーするをCommon Lispでどうかくのか?

(progn
 (loop for i in '(>>657 >>658 >>663 >>664 >>665 >>666 >>667 >>668) do
   (unintern i))
 (gc)
 'Done)

727 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:13:30 ]
>がうちぇ
セロ弾きの「ごーしゅ」じゃなかった?

728 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:19:17 ]
ガウチェ(・∀・)
の方がなんとなく小気味良い気がして

729 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:19:59 ]
がうちぇのがしっくりくるのは間違いない

730 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:25:26 ]
がうちぇの方が美味しそう

731 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:28:04 ]
ガウチェ(・∀・)
のほうがかわいいことは確か。

732 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:40:36 ]
>>723-725
DScheme v372 では両方ともhogefugamogaが返ってきた。一応、報告のみ。
理由は説明できないw

733 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:50:00 ]
>>724
R6RSでは明確に決まってなかったっけ?

734 名前:723 mailto:sage [2008/06/19(木) 02:12:50 ]
>>732
両方無限ループならわかるけど無限ループらないのはわからないwwww
アリガト!

735 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:55:33 ]
プログラムのトップレベルでの(begin <表現形式1> ...)は、beginのボディを形成する連続する式、定義、構文定義に等しい。(R5RS 5.1)

(display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
(display 'fuga)
(cc 'moga)
においてcall/ccが返し、ccに記憶される継続は
(lambda (x)
 (print (display x))
 (loop (print (eval (read) (interactive-environment)))))
と看做せるから無限ループに陥らない。
他方、
(let ()
 (display (call/cc (lmabda (c) (set! cc c) (cc 'hoge))))
 (display 'fuga)
 (cc 'moga))
においてcall/ccが返し、ccに記憶される継続は
(lambda (x)
 (display x)
 (display 'fuga)
 (cc 'moga))
と看做せるから無限ループに陥る。
(ccの末尾再帰呼出し)
beginをR5RS巻末のように合成構文として実装すると後者になるが
原始構文として規格通りに実装すると前者となる。



736 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 10:47:48 ]
>>735
ありがとう。
つまりbegin構文を、Gaucheは合成構文として実装してるけど、
DrSchemeは原始構文として実装してるということみたいですね。

737 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 13:21:59 ]
>>735-736
質問です。原始構文として実装してるということは、ifやletのような特殊形式ということなんでしょうか。
初心者なので特殊形式を知ったばかりですが、SICPにnew-ifという例があったのと似てると思いました。

738 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:26:32 ]
>>735>>736
R5RSの「原始構文」って何よ?

739 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:37:01 ]
Schemeのプリミティヴ構文はif、quote、lambda、define、set!であり、
letやcondなどは導出構文という事になってます。
(但しbeginやdefine-syntax、let-syntaxはマクロでは導出できない)
Common Lispでは特殊形式とマクロという区別がありましたが
Schemeでは両方構文として扱われます。

どうもbeginはトップレベルでは「beginがない式と同等に扱われる」のは表面上であり、継続は
(lambda (x)
 (begin (display x)
     (display 'fuga)
     (cc 'moga))))   ;; beginは冗長
として扱う処理系が多いようですね。

原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。

740 名前:723 mailto:sage [2008/06/19(木) 22:01:45 ]
>>735
ふおおなんか説明してくれてありがとうなんだけど何言ってるかわっかんねw

>beginのボディを形成する連続する式、定義、構文定義に等しい。
って、つまりbeginで囲ってないのと同じ意味になるぜよってこと?

741 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:09:48 ]
>>740
つまりR5RSの定義ではbeginのトップレベルにおいてDrSchemeのような挙動が期待されてる。
Gaucheを含めた他の処理系の挙動はR5RSとしてはおかしい。R6RS対応だからというわけでもないし。
これは>>724で言ってた処理系の実装依存の問題というより、うまく実装できていない処理系が多いということだと思う。

742 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:15:45 ]
それがR5RSの仕様に反する事をしないScheme48でも無限ループになるんですよ。
トップレベルのbeginはローカルスコープを作りませんよ〜くらいの意味にも取れますから
無限ループになってもR5RSに反するとは言い切れませんね。
R5RSは細かく呼んでいくと解釈の分かれる部分が多々ありますし。

743 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:17:17 ]
typo
呼んでいく→読んでいく

744 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:20:12 ]
Scheme48でも無限ループになるからR5RSではトップレベルのbeginで無限ループを作ることが仕様に盛り込まれてると?
Gaucheのバグだと思うなぁ

745 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:31:28 ]
いや、R5RSを読む限りでは無限ループになるのもそうでないのも
どちらも規格に反しない、という事だと思います。



746 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:44:07 ]
初心者の俺様からすれば無限ループになってくれたほうが理解しやすくて幸せだぞ

747 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:49:58 ]
仕様というのは、それに従って作ればバグが無いものが作れるとは限らない。
だけど、バグが無いものを作るべきだと思うよ。

748 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:08:58 ]
Schemeってどやってshort codingするの?
CならハッカーのたのしみやShort Coding等の本があるのに情報不足でしょ?

749 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:39:10 ]
どうしてshort codingしたいの?

750 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 07:10:41 ]
ChickenってWindowsBinaryのヤツ使えばexe吐けるの?
とりあえずインスコしてやってみてもうまく出来ないし公式サイトにもWindowsでexe作る方法書いてないっぽいし困ってしまったよ!
教えて!エロい人!

751 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:20:26 ]
クイックソートをcps変換したときappendってタイプするのがめんどくなって
(define ++ append)
ってしたけどこれはshort codingに入りますか

752 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:38:42 ]
大きなletrecの下で

753 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 11:40:49 ]
exeなんて飾りです。エロい人にはそれがわからんのですよ。

mingwとmsysをまずインストールしましょう。
そしてchickenのwindows用binaryをCドライブ直下に解凍しましょう。
msys.batを起動しましょう。
export PATH=/c/chicken/bin:$PATHと打ち込んでPATHを設定しましょう。
作られる実行ファイルはlibchicken.dll等に依存するのでPATHを設定しないと起動しません。
vi foo.scmと打ち込んでSchemeソースを作成しましょう。
csc foo.scmと打ち込んでコンパイルしましょう。
./foo.exeと打ち込んで実行しましょう。

ttp://www.mingw.org/
ttp://nchc.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe
ttp://nchc.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.10.exe

754 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:43:26 ]
>>739
> 原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。

かなり細部に渡る話をしているので、言葉は厳密に使った方がいいと思います。
特に今ではR6RSがあるので、何を指していっているのか分からなくなります。
R6RSには"primitive syntax"(9)というのがあって、

> Schemeのプリミティヴ構文はif、quote、lambda、define、set!であり、

とは違うものです。R5RSには"primitive syntax"という用語は出てきません。
またこれら(if, quote, ...)を使ったformは、R6RSの"primitive syntax"(9)の一部である
primitive expression types(9.1)にも含まれません。
R5RSでは含まれていた(4.1)のですけれど。


755 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:14:41 ]
(原始式のうち構文キーワードで始まるリスト)と定義、ならよろしいか?



756 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:33:57 ]
追加:R5RSにおける

757 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:34:34 ]
R5RSでは内部表現を「リスト」と限定していません。
また意味論もリスト上で定義されていません。

758 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:37:42 ]
そういう根源的なところで Scheme って本質的に Lisp ではないんだよな
(茶々すまん)

759 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:45:19 ]
少なくとも形式的構文上はリストとして定義されてませんか?(R5RS 7.1)
意味論上はともかく。


760 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:51:32 ]
解釈改憲より新しく書き直したほうが建設的だと思うけどな
実装を書き直す人は腐るほどいるが

761 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 14:02:24 ]
>>759
仕様もR6RSでやったところ。

762 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 14:02:46 ]
間違えた>>760へのレス

763 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:11:45 ]
>>759
(f a b)が(f . (a b))と同じとは文法には書いてない。
印字表現が似ているだけなのでは?

そもそも「構文上リストとして定義」とはどういう意味なのでしょうか?


764 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:21:32 ]
<lambda expression> --> (lambda <formals> <body>)
<quotation> --> '<datum> | (quote <datum>)
<assignment> --> (set! <variable> <expression>)
<conditional> --> (if <test> <consequent> <alternate>)
<definition> --> (define <variable> <expression>)
      | (define (<variable> <def formals>) <body>)
      | (begin <definition>*)

765 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:23:38 ]
ただし意味論上の<list>と同一ではない



766 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:36:42 ]
>>741
んなことない。トップレベルでの継続がどこまでの範囲を補足するかの
規定がR5RSには無いんだから、どっちの解釈もあり。
Gauche系の解釈でもトップレベルbeginをletに展開しているわけじゃない
(letに展開したらdefineがうまくいかない)。
コンパイルと実行の単位の問題で、継続の捕捉範囲が変わってるだけ。


767 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:59:38 ]
生存期間が書かれてなければ、無限生存期間なのではないでしょうか。
コンスセルがそうであるように。

768 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:15:07 ]
>>764
これは「構文上リストとして定義」ではないです。

これが「構文上リストとして定義」なら、
他の言語に良くある<式> --> ( <式> ) までそうなってしまいます。

そもそも「構文上リストとして定義」という概念はないと思います。
リストには、シグネチャや意味が付いてまわりますから。

769 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:18:32 ]
>>723
> ;A
> (display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
> (display 'fuga)
> (cc 'moga)

(call/cc (lambda (c) (set! cc c) (cc 'hoge)))
(display 'fuga)
(cc 'moga)

だとどうでしょう?



770 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:28:28 ]
<list> --> (<datum>*) | (<datum>+ . <datum>)
       | <abbreviation>
<datum> --> <simple datum> | <compound datum>
<simple datum> --> <boolean> | <number>
     | <character> | <string> |  <symbol>
<symbol> --> <identifier>
<identifier> --> <initial> <subsequent>*
     | <peculiar identifier>
<initial> --> <letter> | <special initial>
<letter> --> a | b | c | ... | z

<special initial> --> ! | $ | % | & | * | / | : | < | =
     | > | ? | ^ | _ | ~
<subsequent> --> <initial> | <digit>
     | <special subsequent>
<digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<special subsequent> --> + | - | . | @
<peculiar identifier> --> + | - | ...
と辿れば一応リスト。(構文キーワードも識別子だから)
他の言語に良くある<式> --> ( <式> ) はSchemeには存在しない。
うーん、苦しいw

771 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:39:07 ]
aclって今でもアホみたいに高いの?
USでは$599 (アカデミックユーザ)からとはかかれてたが。

772 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:06:43 ]
レス遅くてサーセン

>>753
指定されたパスが見つかりません。(←MSYS.bat上だと文字化けしてる
*** Shell command terminated with exit status 1: /chicken/bin/chicken test.scm -output-file test.c -quiet
って言われてしまうお…

やった
OS WinVista Ultimate
MinGW 5.1.4は元から入れてあった
MSYS 1.0.10インスコ(インスコ途中にMinGWの場所指定しろって言われたからした
PATHをchicken/binな場所に通した
msys.bat実行した csc test.scm とかしてみたら上記エラー
/(MSYSインスコ場所直下)にchickenフォルダ移してみたりとかもやってみたけどダメだったぜ…

よくわかんねーけど
ttp://alohakun.blog7.fc2.com/blog-entry-912.html
とかみるとoファイルが吐かれるらしいけど、何もファイル吐かれてない… .cも吐かれてない
ボスケテ

773 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:06:26 ]
>>772
パス指定がどっかで決め打ちになってる予感。

774 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:23:54 ]
>>772

c:\chicken\bin>csc -dynamic test.scm
ってやってみるとgccがないって怒られるけど、.cファイルは作られる。
おそらくオプション指定の問題。

775 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:18:40 ]
csiは起動しますか?



776 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:20:48 ]
自分の環境でビルドすると.scmから.exeファイルが作られるだけで.cも.oも残りませんね

777 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:25:43 ]
結局gccが必要なのか。

778 名前:デフォルトの名無しさん [2008/06/21(土) 00:31:58 ]
どうもいろいろ試してみた所772のエラーメッセージは
chickenディレクトリがc:\にない場合に出る模様。
c:\chickenになってますか?

779 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:50:28 ]
>>774
コマンドプロンプトからそれやってみると同じエラーが出る罠

>>775
今やってみたらコマンドプロンプトだと出来るけどMSYSでやってみたら起動しなかった
エラーもなんも表示されない不思議な状態になった もちろん何か入力してもなんもなし

>>778
d:\Scheme\chicken\binに置いていてお PATHの設定でそっち指定してたけど
chickenをC直下において
>>753の通りにパス設定したらエラーが変わったお

'gcc' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
*** Shell command terminated with exit status 1: gcc test.c -o test.o -c -fno-strict-aliasing -DHAVE_CHICKEN_CONFIG_H -Os -I /chicken/include

で、とりあえずcファイルはできた

で、エラーに従って
export PATH=/c/MinGW/bin:$PATH とかしてみたら
Info: resolvingうんたら〜ってメッセージが5個くらい出たけどtest.exeが出来ました!

ついでにobjdump -p test.exeしてみたら
DLL Name: libchicken.dll
DLL Name: KERNEL32.dll
DLL Name: msvcrt.dll
だってさ MinGW周りのDLLはいらないっぽいのが不思議だ…

というわけでした!みんなありがと!愛してるぜ!

780 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:25:18 ]
>>779
MinGWって、C++のスレッド関係で独自ランタイム必要とするだけで、
CならMSのCランタイムだけで大丈夫じゃなかったっけ?

781 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:05:58 ]
>>200番台でやってた継続の例をwikipediaでみつけた。

en.wikipedia.org/wiki/Call-with-current-continuation

>>268-271と似てる〜

782 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 02:46:40 ]
>>767>>766 へのレス?
生存期間の話じゃないよ。継続の「底」をどこに取るかって話。
R5RSのトップレベルの実行はREPLの実行と区別されていない。全ての
トップレベルフォームが見えてる状態で一気に実行するところを
継続の起点と見るか、REPLにおいてトップレベルフォームひとつひとつ
を実行するところを継続の起点と見るか、って違い。

R6RSではREPLそのものが無くなって、トップレベルの意味は明確化された。


783 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 09:31:57 ]
REPLって何?

784 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 09:39:13 ]
Random Electrical Pulse Light

785 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:04:02 ]
reed eeval print lup



786 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:08:03 ]
呪文:よんでひょうかしていんさつしてくりかえす

787 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:12:56 ]
ググれ

788 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:45:05 ]
話は変わるけど、Gaucheboxに入ってるGaucheってmingwバイナリパッケージのより新しい?
pegとかも入ってるんだけど…。

789 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:26:09 ]
; >>783

;The Read-Eval-Print Loop

(define (driver-loop)
(begin
(let ((input (read))) ; read
(let ((output (eval input))) ; eval
(display output))) ; print
(driver-loop))) ; loop

790 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:45:57 ]
>>788

practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox#H-1vw6gwn

基本的にGaucheのCVS HEAD(今はSubversion trunk)をビルドするので、
その時点の最新版が入る。リリース版の0.8.13より新しい。

791 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:51:15 ]
(define (eval x)
x)

(define (driver-loop)
(begin
(let ((input (read)))
(let ((output (eval input)))
(display output)(newline)))
(driver-loop)))

(driver-loop)

792 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:23:43 ]
>>791
Lispではよくあることだが、式と値を混同しているね

793 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:53:32 ]
>>792
それではevalのお手本をどうぞ。

794 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:01:24 ]
>>791
> (define (eval x)
> x)

これマジレスなのw

795 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:08:34 ]
S式を 評価するのに 値呼び



796 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:14:49 ]
評価頼られてるのに、自分はとんずらして、他に丸投げかよ。

797 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:25:15 ]
あと、継続渡しと称して (lambda (x) x) を渡すこともあるね

798 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:49:16 ]
普通にこれで動く。

(define (driver-loop)
(begin
(let ((input (read)))
(let ((output (eval input)))
(display output)(newline)))
(driver-loop)))

(driver-loop)

でもevalのお手本、観てみたいな。

799 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:51:28 ]
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

800 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:59:06 ]
批判してる奴ってなんでそんなにエバルんだろう?

801 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:04:05 ]
>>797
それ
(define (eval x)
(lambda (x) x))
という意味?
(+ 2 2)
=>
#<procedure>
になると思うよ。ちょっとマズイ気がする。

802 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:32:42 ]
修辞疑問のお手本ですか

803 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:01:45 ]
Lisp Scheme FAQ
「修辞疑問文」

要点を強調するために発せられる修辞疑問文では、答は期待されていない。
多くの場合、答は疑問文自体に含まれるか明白だからである。
前提的疑問文は、答えうるものが何であれ、その人が断定しようと望んでいること以上の情報を含んでしまうだろうから、
ジョークとして用いられたり、相手を困らせるために用いられたりする場合がある。

例)
批判してる奴ってなんでそんなにエバルんだろう?
修辞疑問のお手本ですか

804 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:03:20 ]
なるほど「修辞疑問のお手本ですか」は修辞疑問文の再帰的な定義になっているわけだ。w

805 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 06:53:39 ]
つ「修辞疑問って答えを期待してないんじゃないんですか?」



806 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 06:57:39 ]
>>803
この例の会話ヘンだよ。

>例)
>批判してる奴ってなんでそんなにエバルんだろう? <=答えを期待してない
>修辞疑問のお手本ですか <=なぜか答えてるw

807 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:54:34 ]
期待してないものが思いがけず手に入ることだってあるんですよ

808 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 15:39:59 ]
修辞疑問の意味もわかってないのに使うからだよw
みっともないなぁ。

809 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:57:26 ]
これは勝利宣言っぽいな。或いは単に言葉が足りない。

810 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:23:03 ]
>>790
WiLiKiはだいたい見てるつもりだったけど気づいてなかった。
peg使ってみたかったけどコンパイルめんどいからリリース待ちだったので、
不意に動くバイナリが手に入って嬉しい。

ところでGaucheはもう完全にSubversionに移行してんの?

811 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:44:01 ]
言葉遊びなんかどうでもいいんだよ。
evalのお手本、誰か書いてよ。簡単そうに言ったんだら。
マジ、期待したのに。

812 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:30:25 ]
evlis[m;a] = maplist[m; \[[j];eval[car[j];a]]]


813 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:31:12 ]
evcon[c;a] = [null[c]->error[A3];
eval[caar[c];a]->eval[cadar[a];a];
T->evcon[cdr[c];a]]


814 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:32:21 ]
apply[fn;args;a]=[
null[fn]->NIL;
atom[fn]->[get[fn;EXPR]->apply[expr;args;a];


815 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:34:46 ]
M式とはまた古風だな



816 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:41:34 ]
evalくらいでエバらないでよね!

817 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:45:59 ]
LISP 1.5 の論文の丸写しだなw

818 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:55:40 ]
SchemeはS式で意味論が定義されていないのでLispではない、という話があったけど
S式とM式を使うLispはLispではないの?

819 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:59:15 ]
M式→S式は機械的に変換可能。単に表記の問題。

820 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:00:20 ]
LISP 1.5 Programmer's manual の eval の定義は確か ] が一つ
足りないんだよね。丸写しするとアウトかな?

821 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:03:03 ]
LISP 1.5 はM式で入力できるわけじゃないしね

822 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:08:30 ]
>SchemeはS式で意味論が定義されていないのでLispではない、という話があったけど
すごい燃料を投下する奴もいたもんだ(w
どうなったのかな?

823 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:15:38 ]
>>812-814
Schemeに翻訳キボンヌ

824 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:46:27 ]
もったいぶった前口上はいいからw

825 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 07:52:08 ]
>>822
古い話だよ。R6RSで解決。




826 名前:822 mailto:sage [2008/06/24(火) 08:00:17 ]
>>825
サンクス!
やっぱりR6RS読んでみるか・・・
でもこれ、俺には大仕事なんだよな〜 orz

827 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 10:08:52 ]
つ「はてなようせい 意味論」でググれ

828 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:00:23 ]
>>818
「S式で」どころか「意味が定義されてない」Lispが多い。
だから「S式で意味が定義されてない」とLispでないなら、
多くのLispはLispではない。


829 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:06:20 ]
形式的定義だけが定義じゃないけどな

830 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 16:23:55 ]
自分の手でSchemeを使ってevalが書けないのが明白になりつつあるなw

831 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:39:15 ]
Schemeを使ってevalを書くのは容易
だけどどの程度ホスト処理系の機能を使う事が要求されているんですか?
特別式は使っていいんですか?

(define (my-eval e env)
  (cond ((self-evaluate? e) e)
        ((symbol? e)
         (let ((x (assq e env)))
           (if x
               (car x)
               'UNBOUND)))
        ((and (pair? e)
              (eq? (car e) 'if)
              (pair? (cdr e))
              (pair? (cddr e))
              (pair? (cdddr e))
              (null? (cddddr e)))
         (if (my-eval (cadr e) env)
             (my-eval (caddr e) env)
             (my-eval (cadddr e) env)))
        ... ))
みたいな程度でいいんですか?

832 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:39:50 ]
typo
(car x) -> (cdr x)

833 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 18:56:51 ]
>>831
もともと>>782の説明に使うevalが求められていたから、その違いを表面化させることが出来るならホスト処理系の機能を使う事が許されていると思う。

834 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:38:52 ]
機種依存無しで違いを表面化させて再現するevalを書くの大変そうだ。

>>831
期待してるよ。

835 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:46:25 ]
簡単だろ。
というかSICPの課題させようとしてるだろ?
大学の宿題か?



836 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:52:07 ]
>>835
話しそらすの上手だね。
>>723から始まったbeginのトップレベルの継続の違いを再現してみせる2種類のevalが本題。
別に宿題とか云う次元の話じゃない。逃げたきゃ逃げれば?どうせ匿名だし。

837 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:54:57 ]
どうせ匿名なんだから構わなきゃいいのにw

838 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:29:22 ]
>>835はいい奴だと思う。

M式書き写してLISP 1.5のウンチクたれてる誰かさんより。

839 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 03:21:49 ]
いい奴だが不要だ

840 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 04:35:41 ]
>>836-837
結局、処理系のソースでも読んで君自身で作るしかないだろうな。
違いを再現するためにevalを作れという事は、
つまり「継続を含んだeval」が必要で、
そのevalと同位の継続もファーストクラスとして必要になる。
そうでないと組み込みbeginと構文唐beginの違いは多分理解できない。
ここの住人は冷めてるから、いくら喚き散らしても
そこまで面倒な事をこの流れでやるわけがない。
ちなみに継続はSICPの範囲外だ。
がんばれ。

841 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 05:53:13 ]
しょうがねえなあ、ちょっと書いてやるから後は考えろ。

(define (eval exp env cont)
(cond ((number exp?) (cont exp))
((symbol? exp) (eval-var exp env cont))
// ry
(else (eval-list exp env (lambda (l) (apply (car l) (cdr l) cont))))))


842 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 06:04:33 ]
on lispに

843 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:44:15 ]
R5RSの解釈の問題なら、仕様書を読まずに解決することはあり得ないですね

844 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 08:41:26 ]
(begin
 (define cc #f)
 (display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
 (display 'fuga)
 (cc 'moga))

が無限ループにならない実装はtop-levelのbeginだけ特別にスプライスして

(eval '(define cc #f) (interaction-environment))
(eval '(display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (interaction-environment))
(eval '(display 'fuga) (interaction-environment))
(eval '(cc 'moga) (interaction-environment))

とやっているからで、これはevalの実装というよりマクロの展開方法の違いと言える。
ちなみにR5RSは一塊でevalしてもスプライスしてevalしてもどっちでもよかったと思うけど。



845 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:34:35 ]
>とやっているからで、これはevalの実装というよりマクロの展開方法の違いと言える。
>ちなみにR5RSは一塊でevalしてもスプライスしてevalしてもどっちでもよかったと思うけど。

これDrSchemeとか他の処理系を確認して書いた?



846 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:38:39 ]
>というかSICPの課題させようとしてるだろ?

>ちなみに継続はSICPの範囲外だ。

Seasoned Schemerには継続が出てくる。

847 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 15:09:03 ]
R5RSの5.1節を
「beginで囲んでも囲まなくても意味が変わらない」
と解釈するならスプライスするべきです。

意味が変わるというなら、どう変わるのか明確にするべきです。

848 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 15:22:20 ]
>>845
「処理系確認する」ってやり方で判定すると、
「どっちでもいい」個所がどんどん増えるだけだと思うが?

849 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:10:38 ]
>>847
のように考えた人が作ったのでDrSchemeはあのように動作しているらしい。
それはここを見れば解るよ。
www.cs.brown.edu/pipermail/plt-scheme/2006-August/014277.html
明確な根拠が書かれていれば嬉しかったのだが・・・残念


850 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:27:08 ]
>>848
かなり上のほうでGaucheとDrSchemeを比較してたから。
確認して書いてるなら話がつながるだろ?

851 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:42:05 ]
>>847
> R5RSの5.1節を

At the top level of a program (begin <form[1]> ...) is equivalent to
the sequence of expressions, definitions, and syntax definitions
that form the body of the begin.


852 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:27:47 ]
>>851
>is equivalent to
この文をどう解釈するか。
ひとつめは
>「beginで囲んでも囲まなくても意味が変わらない」
という立場だ。
もうひとつは
>意味が変わるというなら、どう変わるのか明確にするべきです。
という立場だ。Gaucheの挙動はこっちだった。

ここまでの流れ:
Gaucheの挙動ってエラーじゃねえの?=>エラーじゃねえよ!=>ならeval書いて説明してみろよ=>evalなんて簡単。=>さっさと書け、ゴラァ!
=>ほら書いてやったぞ=>それじゃ意味が明確になってねえぞ、ゴラァ!(今このへん)

853 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:33:04 ]
>>852
> ならeval書いて説明してみろよ

この馬鹿発言は無視すべき


854 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:39:07 ]
eval書いて説明するような話じゃないよな

855 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:45:43 ]
Gaucheの挙動ってバグじゃねえの?
=>バグじゃねえよ!
=>R5RSではトップレベルの実行はREPLの実行と区別されていないよ、R6RSではREPLが廃止されたけどね
=>REPLってなーに?
=>Read Eval Print Loop
=>(define (eval e) e)
=>S式の評価なのに値呼びpgr
=>ならてめーが手本を見せてみろよ
=>(マッカーシーの論文の丸写し)
=>自分の手で書けねーのかよ
=>evalなんて簡単。
=>さっさと書け、ゴラァ!
=>ほら書いてやったぞ(<=今このへん)
じゃない?

継続の底を説明する為にevalを書くって話は832で初めて出てきたような



856 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:49:29 ]
(define (eval e) e) は近年まれに見る傑作だな。w

857 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:55:32 ]
unicodeで書いたソースコードの改行が"\n"になってる処理系と"\n"(\は半角)になってる処理系があるんだな。
"\n"で改行しなくて驚いた。

858 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:15:04 ]
>>856
(define (^-^)(print '許してやんなよ。))



859 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:16:26 ]
>>855
これってアンチのネタだったのか・・・

860 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:17:52 ]
>>858
(define (・x・) (print 'Bカップ))


861 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:18:53 ]
>>855-856がshiroさんのもうひとつの顔だったら怖い

862 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:30:21 ]
いいこと思いついた
おまえらちょっとeval書け

863 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:31:12 ]
REPL「いいこと思いついた。おまえ俺の中でbeginしろ。」

864 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 02:02:39 ]
>>858, >>860
> (^-^)
許してやんなよ。
> (・x・)
Bカップ

エラー吐くかと思ったらw

865 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 02:24:42 ]
(cut or <> <>)
(fold or #f '(#f #f #t))
怒られる なんで?



866 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 02:32:46 ]
orがapply出来ないから。
(fold (lambda (x y) (or x y)) #f '(#f #f #t))

867 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 03:00:35 ]
そうなのか…
ちょっと明日R5RSとにらめっこしながら考えてみるわ
不便だなぁな気がする…

868 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 03:41:29 ]
C言語に例えると式の中にif文混ぜるようなもの。

869 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 07:21:11 ]
>>855
>S式の評価なのに値呼びpgr
値呼びは間違いではないし、pgrなんて誰も言ってないよ。

式を評価するタイミングを理解できない人が多いのは
S式の見た目が単純すぎることと、評価の仕組みがわりと複雑なことのギャップが
驚き最小の原則に反しているんじゃないかな。

870 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 07:59:08 ]
Gaucheでバグかなと思ったのあるけど聞ける雰囲気じゃないね
Rubyより怖い

871 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:10:33 ]
ああ、宗教的な何かがここに蔓延してることにしたいわけね。

大丈夫だよ。馬鹿は論理的に叩かれるけど、馬鹿じゃなければ叩かれない。
書いてみれば?

872 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:24:07 ]
>>867
orが普通の関数だと、
ショートカットにならなくて、
それはそれで不便。

Schemeの特殊形式は
数が少ないから覚えられる。
覚えよう。

873 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:39:11 ]
rubyってこわいの?

874 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:52:37 ]
つ 落語&「rubyよりこわい」

875 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 09:13:10 ]
>>870
別にネタや燃料の投下になってもいいじゃん!



876 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 12:41:57 ]
バクだってあるさ
にんげんだもの


877 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 16:18:00 ]
ココのスレ見るとLisperさんが何をしてきてどう思われてるかが良くわかります。こういう印象です。
pc11.2ch.net/test/read.cgi/tech/1209441159/

878 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 16:20:40 ]
粘着、こっちまで遠征かよw

879 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 19:58:10 ]
>>871
ほとんど名指しされてるw

880 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 06:31:04 ]
>>870 WiLiKiに書いたら? ちゃんと対応されるみたいだし

881 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 06:44:49 ]
Rubyをプログラミング言語の基準にやめろ
あれはあれで特殊。

RubyとGaucheとMosh、みんな違ってみんないい

882 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 06:50:14 ]
ジャパニーズでおk

883 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 08:34:34 ]
>>882
I cannot understand your words.
"It is k in Japanese"
What meaning is it?
Please write in English.

884 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 11:02:25 ]
コピペか? ひっでえ英語w

885 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 13:07:52 ]
>>884
偶然だぞ

何言いたいかと申しますと「ジャパニーズでおk」という日本語では、外人さんに伝わるものも伝わらないだろう、と言いたいわけです

日本語でやり取りしてるサイトなのだから外国人なぞ居ない、日本人しか居ないのだ、と思い込んでいませんか?
日本人がYoutubeを使っているように、外国人も2chを使っている可能性があるのではないのですか? 何故その可能性を排除しますか?
母国語ではない言語を使うことに苦労しながらも、それでも私達とコミュニケーションをとろうとしている(のかもしれない)人物に対して
「ジャパニーズでおk」という物言いをするのは良いことなのですか?
コミュニケーションをとろうと努力している(のかもしれない)相手に対して、随分失礼な態度ではないのでしょうか
それとも、そんな振舞いをするのが日本人なのですか? 相手にけして通じない言葉を使って悦に入る。それが日本人の性格なのですか?

プログラミング言語のほとんどは日本以外の国で作られたものですから、日本人はその習得や理解に多少なりとも苦労しているはずです
ドキュメントの大多数は英語文献で公開され、英語が不得意な日本人であれば読むのも一苦労でしょう
そのような苦痛をこの板に集う人々は自ら日々感じていながら、何故相手に通じない日本語を使うのですか?



886 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 13:09:55 ]
そして私は思いました
>>881が日本人なら、私こそが失礼なことを言っています…

887 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 13:28:06 ]
886は外人さんなのな
2chはある意味、かなり高度な日本語(スラング的な意味で)が要求されるから
もっと慣れてから書き込むべきです。
このBBSで長文を書き込むことと、必死になることは推奨されていません。

そしておそらく881は日本人です

888 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 14:00:40 ]
おまえらの人種が何なのかなんて興味無いよw

889 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 14:35:56 ]
おまえらここは言い争いの場にやめろ

890 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 15:24:25 ]
>>888
おまえの興味なんて興味無いよw

891 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 15:25:16 ]
>>890
おまえの興味なんて興味無いよw

以下再帰的なので略

892 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 15:30:14 ]
ここは酷い名無し再帰スレです。

893 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 16:54:30 ]
>>892
Yコンビネータ乙

894 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:08:39 ]
不動点ですが何か?

895 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:15:23 ]
>>894
894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?



896 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:18:32 ]
>>895
895 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:15:23
>>894
894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?


897 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:19:16 ]
>>896
896 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:18:32
>>895
895 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:15:23
>>894
894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39
不動点ですが何か?

898 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:35:05 ]
やめいw

899 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:05:20 ]
本当に再帰すんなw

900 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:15:21 ]
ヌルポ

901 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:18:55 ]
ガッ

902 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:26:11 ]
再帰を終わらせようと思ったのにガッされたお(´・ω・`)

903 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:48:48 ]
>>902
つぎはcall/ccをかませよ。

904 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 20:46:10 ]
pythonの内胞リストで感動してきた
www.ibm.com/developerworks/jp/linux/library/l-prog3/

要するにmapの拡張だと思うんだけどmapの拡張を柔軟にするって意味では
lispのmacroも同じ?

pythonの内胞リストと同じマクロって作れないの?

905 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:11:58 ]
>>904
(use srfi-42)




906 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:13:46 ]
リスト内包記法な

907 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:55:32 ]
>>904
実用的なのは >>905 が書いてるsrfi-42だが、マクロでの実現法を
知りたいならここにあるlist-ofが参考になる。15行で内包表記を実現。
practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%e3%81%ae%e5%8a%b9%e7%94%a8#H-b9epxs

908 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:57:15 ]
内包表記は複雑。あんなものは内包がいい。

909 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:05:00 ]
うまいこと言うなあ

910 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:17:56 ]
尊敬します!

911 名前:デフォルトの名無しさん [2008/06/27(金) 22:47:39 ]
Lispに入門したいけどまだ戸惑ってる僕が質問します。
みなさんはLispを使って何をしていますか?

ばかな質問だったら無視してください。

912 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:48:57 ]
仕事

913 名前:デフォルトの名無しさん [2008/06/27(金) 22:54:47 ]
>>912
すごっ、どんな分野なんですか?

914 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:58:31 ]
ふつーに、ちょっとしたデータを作ったり、ソースとかドキュメントを加工したりするのに使ってるよ。

915 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:59:50 ]
912ではないが
設定ファイルのインタプリタとか
シェルみたいにインタラクティブに何か操作する言語を作るとか



916 名前:デフォルトの名無しさん [2008/06/27(金) 23:03:09 ]
みんな実務に使ってるんですねぇ。
CG系の目的で使ってるひといませんか?

917 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:03:42 ]
よほどのことが無いかぎり、プログラムは Lisp (私の場合はCommon Lisp)で書いている。
よほどのこと、というのは、
・効率などをシビアに要求されて、他の言語でないとその要求を満たせない場合
・他の言語を使えばおそろしく簡単に(たとえばライブラリを呼ぶだけ)済む場合
・(顧客の指示など)社会的な理由でLispを使うことが許されない場合

918 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:04:32 ]
>>916
レンダリング系は難しいかもしれないけど、モデリング系ではかなり使われてると思う

919 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:08:45 ]
>>916
昔々Symbolicsというマシンがあってだなあ・・・
いや年寄りの独り言だ、忘れてくれ・・・ orz

920 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:10:04 ]

昔話禁止しようぜ


921 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:11:07 ]
R5RSは忘れてR6RSにしようということですね。わかります。

922 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:16:24 ]
>>916
例えばここ見てみるといいよ。
ttp://www.franz.com/success/customer_apps/animation_graphics/

923 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:45:50 ]
R6RSも忘れてERR5RSにしようということですね、わかります

>>911
あなたは両手を使って何をしていますか?
(もし手の不自由な方だったら申し訳ありません。意味を汲み取ってください。)

924 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:51:55 ]
>>923
> あなたは両手を使って何をしていますか?

自慰


925 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:56:14 ]
>>924
片手でやれ



926 名前:デフォルトの名無しさん [2008/06/28(土) 01:19:54 ]
>>923
すみません、意味を汲み取れませんでした。
今はタイピングしてますね。

927 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 01:32:39 ]
深い意味があるわけではありません。
なんか予想外の方向に展開してますが
日常生活の動作の多くに(無意識に)両手を使うように
コンピュータを使う動作の多くに(無意識に、とまではまだ私はいきませんが)Lispを使うのです。

などと書きましたが未だに3分の1くらいはBシェルスクリプトにしてしまいます:-P

928 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 02:42:44 ]
春先辺りから変なのが常駐してるな。

929 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 03:09:44 ]
だれかグレアムおじさんのArcを実装しようという方はおらんのかね

930 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 03:23:06 ]
>>929
グレアムおじさん

931 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:53:38 ]
>>916
ちょっと違うかもしれないけどこういうのもあるよ
www.pawfal.org/fluxus/

932 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 14:58:24 ]
>>916
gimpのscript-fu?


933 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 16:00:43 ]
行列計算とplot関係はpythonで
pythonのメタ制御をlispでしたい
しかし理想の環境はいまだできず

934 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:32:42 ]
それLisp必要か?

935 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:36:23 ]
それPython必要か?



936 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:43:54 ]
行列計算はどうなの?

937 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:57:20 ]
Ypsilon Scheme System(イプシロン・スキーム・システム)はプログラミング言語Schemeの
最新規格R6RS*に準拠する実装です。インタープリタの特性を活かしてスピーディーで
インタラクティブなアプリケーション/ユーザーライブラリーの開発を可能にします。また
マルチコアCPU用に最適化したMostly Concurrent Garbage Collectionを実装することに
より、極めて短いGC停止時間と並列実行によるパフォーマンスの向上を達成しています。

ttp://www.littlewingpinball.net/mediawiki-ja/index.php/Ypsilon_Scheme_System

この会社のピンボールゲームとはMacでトリスタンやって以来の付き合いなわけだが、こう
いう方向に来るとは思わなかった。

938 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 18:00:59 ]
Python上で動くフルスペックのCommonLispとSchemeが欲しい。(CommonLithpとかThcheme?)
OCaml上でも可。(OCSみたいなヤツ)



939 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 18:59:37 ]
>>938
逆を作った方がいいだろうな。jpythonやiron pythonみたいにcl pythonかsbcl pythonでも
考えてみたいい。

940 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:05:16 ]
PythonやOCamlが動く環境のほうが
CLが動く環境よりも多いんですよ
それにPythonやOCamlは処理系が統一されてるし

941 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:27:05 ]
>>939
> 逆を作った方がいいだろうな。
> 考えてみたいい。

意味不明



942 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:56:15 ]
>>938
せめてJavaがいいな
schemeではありそうだけど

943 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:01:56 ]
C/C++上で動くSchemeの何が気に入らないのかが不明だが
宗教上の理由かな

944 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:04:53 ]
gaucheをxrea

・仮想環境にopenSUSE 10.3/11.0 i386版をインストール
・ディレクトリ /virtual/(xreaのあなたのID)/ を作る。
・そのディレクトリの下に bin lib share ディレクトリを作る。
・gaucheのソースを本家からダウンロード&展開
・gauche-0.8.xxディレクトリに移動
・./configure --prefix=/virtual/(xreaのあなたのID)/
・make
・make install
・/virtual/(xreaのあなたのID)/に移動
・ tar cjvf gauche.tar.bz2 bin lib share
・ gauche.tar.bz2 を xrea に持っていく。
・ sshでxreaにつなぐ
・ そこで tar xjvf gauche.tar.bz2 とする。

おしまい。openSUSEにはyastからautomake autoconf など開発系のパッケージを入れること。

945 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:08:09 ]
>>944
しまった、誤爆です。でもここでもいいか。



946 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:08:10 ]
Python上であればPythonから簡単に呼べるという幻想でしょ。
たぶん性能が悪くて使い物にならないと思うけど。

どうせやるなら Java VM か .NET CLR 上が面白いだろうね。

947 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:19:03 ]
>>943
C/C++ではGUIの仕様の統一が図れないしi386やLinux/Winのみをターゲットにしている事も多い。
JAVAは純正はポータブルじゃないしクローンは(よくなったとはいえ)まだ不完全。
PythonやOCamlは派生処理系はあるもののメインに概ね統一されてるしポータビリティもいいしGUIもある。
という理由です。
FiclやLuaみたいにANSI-Cが必要十分条件なCL or Schemeがあればそれが一番いいんですが。
(といってもGUIの問題が残るけど)

948 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:25:10 ]
要はgccとPOSIXとXがある環境ではどこでも動いてよ!ってことです。

949 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:25:51 ]
gcl がそれに近いかなあ

950 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:32:05 ]
GCLはソースが古すぎてビルドできませんでした(古い関数が使われている?)
その末裔のECLはBoehmGCをportしたらビルドできましたけど

951 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:35:57 ]
どっちにしても Python 上に作ってもまともな性能なんて出ないよ

952 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:39:54 ]
Python上に作るっていうか
JavaVMにおけるKAWAとかSISCみたく
PythonVM上で直接実行されるようにすれば
CLispくらいにはなりませんかね?

953 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:54:24 ]
>>947
ocamlやpython,rubyのGUIって標準はtcl/tkちゃうん?
clはltkが一応あるよ。

954 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 22:03:04 ]
>>947
PythonやLuaの実装言語はCなんだから、
CでGUIを統一できないとか移植性がないとか言うのはおかしいでしょ

955 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 22:42:58 ]
PythonやLuaやRubyは言語≒実装なので事実上の標準という縛りがあるから
その上で動くもののポータビリティが保たれることを利用して
SchemeやCLよりも低レベルでポータビリティを実現して欲しいんです。
いろいろな処理系を移植するのは骨が折れるので。
LuaにGUIがあるのかどうかは知りませんが
必要十分条件が明白な言語の代表として名前をあげました。
POSIXでXlibとgccがあればフル機能は無理でも標準機能はビルドできる、くらいの条件があって欲しいです。




956 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 22:47:32 ]
欲しいものはよく判った。でも今のところ無いと思う。
性能が出なくて労力の割に面白くないから、誰も作らないんじゃないかと想像できる。
だが、やってみなくちゃ判らないぞ。>>955の偉業に期待だ。

957 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 23:06:28 ]
>>955
ansiなscheme or CLにTcl/Tkをポートする方が楽そう。


958 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 23:30:13 ]
GUI込みならPythonアプリはそれほどポータブルではない。

959 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:08:49 ]
>>955
LuaにGUIはないが、君の言う通り「Luaよりも低レベルで」ポータビリティを実現できる
Cで書ける部分を無理にLuaで書くことはない

960 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:30:30 ]
>>955
Python上で実装してポータビリティを上げるって
衝撃の馬鹿理由だな。

961 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:49:27 ]
ポータビリティとライブラリを重視するのは良いと思う
性能重視は競争が激しいし供給過剰だし

962 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 01:03:14 ]
もうすぐ次スレだな

963 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 01:15:09 ]
ypsilon vs gauche

964 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 04:50:03 ]
pythonはポータブルじゃないよ


日本じゃ人気がないから

965 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 07:10:54 ]
おれは最近、仕事でpythonばっかり書いてるよ。
時々lispとの微妙な違いに悲しくなるけど、確かにlisperとしても許容できる、
良い言語だわ。ほぼどこでも動くし、ライブラリも沢山。
そのうち趣味でもpythonばかりになるかも。



966 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 08:39:27 ]
ANSI-Cが必要十分条件だとGC書けねーよ

967 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 09:28:25 ]
>>933-935
matlabに慣れてるからpython.numpyが使いやすい
しかしちょっと高度なこともしてみたい
全部lispでやったほうがいいのだろうか

968 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 09:28:57 ]
>>938-939
pyffi

969 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 09:57:24 ]
>>967
あまり融合度が高くないが、
clisp.cons.org/impnotes/matlab.html

matlabじゃないが、
nlisp.info/

970 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 13:08:28 ]
ピンボールの話題がまだ出ていない件

971 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 13:09:16 ]
ごめん。>>963見落とした

972 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 14:30:26 ]
「事実上の標準」はTck/TkでもXlibでもなくGLUTというオチ

973 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 16:42:13 ]
>>970
ピンボールよりメタボールの方が面白そうだなあ

974 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 22:21:52 ]
evalでschemeが評価できるpythonとか逆にschemeでpythonが評価できるとか


975 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 22:32:26 ]
データの互換性があると使いやすいのだろうが、LispのconsセルとPythonのtupleには
微妙な違いがあったり、symbolに相当するものが無かったり、PythonってLispのようで
Lispでないって感じだよね。



976 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 17:33:24 ]
うわさのypsilonをコンパイルしようとしたらエラーで止まっちゃったわ。
x86_64に対応してないって書いてたわ。残念。

977 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 21:52:16 ]
Scheme on Java > SISC
継続不完全でもJavaとのリンク強ならKawa


978 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 18:34:57 ]
まず考えるべきことは、なぜC/C++とのリンクが弱い (と思われている) かだ

979 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:45:38 ]
>>976
32bitでコンパイルすればいいじゃん。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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