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


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

Lisp Scheme Part18



1 名前:デフォルトの名無しさん [2007/08/12(日) 21:38:15 ]
過去スレ
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

449 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:22:15 ]
(comb '(a b c d) 3)
=> ((a b c) (a b d) (a c d) (b c d))
みたいな関数を作って表示は別にしたほうがいいかもしれんね

450 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:26:24 ]
>>449
一応表示は top関数で表示してます。

(defun comb (seq k)
(setq tmp NIL)
(comb2 seq k tmp)
)

(defun top (seq tmp)
  (print (app tmp (car seq)))
  (cond ((null (cdr seq)) )
   (T (top (cdr seq) tmp)))
)

(defun comb2 (seq k tmp)

(cond ((= k 1) (top seq tmp) )
    ((null (cdr seq)) )
    (T (setq tmp (app tmp (car seq))) (comb2 (cdr seq) (- k 1) tmp) (comb2 (cdr seq) k NIL)
))
としました。


451 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:26:55 ]
結果は

[37]> (comb abcd 3)

(A B C)
(A B D)
(C D)
(B C D)
T
[38]> (comb abcde 3)

(A B C)
(A B D)
(A B E)
(C D)
(C E)
(D E)
(B C D)
(B C E)
(D E)
(C D E)
T
ここまでなんとかなりました。 あと先頭要素が加わってないやつに加えられれば良いんですが・・・・

452 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:27:48 ]
comb2定義の最後の括弧が抜けました・・・

453 名前:デフォルトの名無しさん [2007/10/16(火) 00:44:01 ]
>>449
読み違いました。そういう手もありですね。
しかしどうやるのか・・・

454 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:02:20 ]
まず紙にでも書いて整理しろよ
頭で想像できてない事をプログラムできるわけないだろ

455 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:05:14 ]
紙にも書いてみましたが>>450のやつから進みません・・・

456 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:15:28 ]
紙に書いても判らんなら、もう一度単純ケースの把握からやってみれば?
ABC 2のケースとか。
あと、リスト処理と考えるより単純な集合の比較の問題って思った方がいいぞ。
carとかnullとかリストオペレーターをそのまま使うんじゃなくて
問題に適合するように抽象化してみるとか。

457 名前:デフォルトの名無しさん [2007/10/16(火) 01:28:25 ]
ABC 2 だったら
A選ぶ場合
B選ぶ場合
AB
B選ばない場合
AC
A選ばない場合
B選ぶ場合
BC
B選ばない場合
なし
って感じですよね?でもプログラムだとうまくいかないんですよねぇ。



458 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:36:47 ]
プログラム的に考えてみろよ
例えばビットの組み合わせ問題として解く

1) 記号が3種類なので3ビットで表す
A 001
B 010
C 100

2) 重複に注目しながら全パターンを列挙してみる
AB 011
AC 101
BA 011 x 重複
BC 110
CA 101 x 重複
CB 110 x 重複

答え 110 101 110 すなわち AB AC BC

459 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:44:52 ]
ごめん
答え011 101 110 すなわち AB AC BC
ね。

ABCD 3のケースならビット1が3つあるパターン
A 0001
B 0010
C 0100
D 1000
ならば
ACD 1101
ABD 1011
ABC 0111
BCD 1110


460 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 03:10:09 ]
>>450
再帰関数についてもうちょっと勉強しないと…

(defun comb (seq k)
(top (comb2 seq k))
) としておいて、comb2は、
kが0でなければ、
 seqから一つxを抜き出して、
 (comb2 (seqからxを除いたもの) (- k 1))の先頭にxを付け足すしたリスト
 を全てのxに対して行って、皆listして返す。
k=0ならNILを返す。

k-1の時の結果から、kの時の結果を作り出す部分と
k=0の時の結果から再帰関数を構成する。


461 名前:デフォルトの名無しさん [2007/10/16(火) 08:10:19 ]
>>458
それはわかるんですが。うーん
>>460
先頭にxをつけ加えたリストをすべてのxに対して行うって言うのが書けないんです。正直、言うと誰か書いてもらいたいです。一旦答えわかったら理解できるかもしれないです

462 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 10:55:02 ]
再帰で書く。
(car seq)に対して行った結果を、(cdr seq)についてやった結果に付け加える。
nilになるまでやる。

463 名前:デフォルトの名無しさん [2007/10/16(火) 14:20:44 ]
やっぱりできないんで、答えお願いしてもいいですか

464 名前:デフォルトの名無しさん [2007/10/16(火) 14:25:18 ]
やっぱりできないんで、答えお願いしてもいいですか

465 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 14:31:04 ]
>>258
r6rsでは、
> Characters are objects that represent Unicode scalar values.

ちょっと困ったのが、stringはseqence of characterだから、
サロゲートペアを含めるには、stringじゃなくてbytevectorにしないと、
r6rs準拠にならない。

466 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 14:31:59 ]
>>463>>464
宿題スレに行け。

467 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 16:27:15 ]
>>465
なんで?
文字を素直に UCS-4 にしてしまえばいいじゃないか。



468 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 17:08:54 ]
それじゃ「Unicode scalar values」じゃなくなってしまう。


> (integer->char sv) procedure
>
> Sv must be a Unicode scalar value,
> i.e., a non-negative exact integer object
> in [0, #xD7FF] ∪ [#xE000, #x10FFFF].

469 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 17:31:53 ]
いや、サロゲートペアなんてのが出てくるのは UTF-16 をそのまま 16bit 値として
扱った場合だけでしょ。
string の内部形式として UTF-32 を使ってればそもそも気にする必要はないし、
内部形式に UTF-16 を使っていたとしても、char アクセス時にそれなりに変換
すればいい。
内部形式を UTF-16 にした string で、それをナイーブに char の配列として
実装しちゃいかんというだけのように読めるけどなあ。

470 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 18:05:26 ]
UTF-16とかUTF-32とか関係ないです。
R6RSの文字は"Unicode scalar value"を表現します。
またR6RSに従うならそれしかできません。
"Unicode scalar value"はちゃんとした定義のある言葉です。

471 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 20:10:07 ]
サロゲートペアってのは UTF-16 でしか使われないんだから、UTF-16 と無関係
なわけないじゃないか。
たとえば、U+2000B は UTF-16 で 0xD840 0xDC0B というサロゲートペアで
表されるけど、U+D840 や U+DC0B なんて文字があるわけではない。

あんたが (string (integer->char #xD840) (integer->char #xDC0B)) ができないって
言ってるみたいだから、俺は (string (integer->char #x2000B)) すればいいって
言ってるんだけど、何か勘違いしてる?

472 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 02:12:21 ]
468で既に自分が何言ってるのかわかってないことを暴露している奴に、
そんな親切につきあわなくても……。もはやスレ違い同然。

473 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 12:30:18 ]
Schemeのリスト操作関数について質問です。
Webでサンプルコードとかを検索すると、n番目のリストを参照するための
オペレーターとしてlist-refという名前の関数がよく使われてるっぽいんですが、
これに対応するlist-set!がみつかりませんでした。
ペアに対してのオペレーター(car cdr set-car! set-cdr!)は標準でありますが、
リストに対しては整備されてないんでしょうか。
↓みたいなのがSRFIとかで定義されていればそれを使いたいのですが。

;n番目以降の部分リストを返す
(define (list-tail l n) (if (zero? n) l (list-tail (cdr l) (- n 1))))
;n番目の要素を返す
(define (list-ref l n) (car (list-tail l n)))
; 破壊版 set
(define (list-set! l n obj) (set-car! (list-tail l n) obj) l)
; 非破壊版 set (list-replace?)
(define (list-set l n obj)
(let loop ((i 0) (x l) (r '()))
(if (pair? x)
(if (= i n)
(loop (+ i 1) (cdr x) (cons obj r))
(loop (+ i 1) (cdr x) (cons (car x) r)))
(reverse r))))

474 名前:473 mailto:sage [2007/10/17(水) 12:40:14 ]
ちょっと今調べたらlist-tailとlist-refはR5RSにあるみたいですが
list-set!やlist-set相当はありませんでした。

475 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 14:01:40 ]
そんな操作を使いまくるようならベクタを使う気がする。

476 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:55:25 ]
魔法言語リリカル☆Lispフリーウェア化
blog.bugyo.tk/lyrical/2007/10/post_40.html


477 名前:473 mailto:sage [2007/10/18(木) 00:18:00 ]
効率の話はともかくとして、list-setみたいなパターンはよく使うと思うんですが。
インターフェースを揃えておく利点として、他のコンテナに簡単に移行できる
という今更語るまでもなくCLや他の言語でも証明されてる事ですし。
takeやdropはSRFIで定義されてるのに不思議ですね。



478 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 00:23:43 ]
欲しいと思ったことないけどな。
ランダムアクセスするなら >>475 の言うようにベクタを使うべきなんじゃないの?

479 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:17:33 ]
>>478
〜するべき、とかの話はおいといて、
例えばプロトタイピグとかでコンテナをいちいち決めたくないと思いませんか。
list-set相当の処理は入るけど大部分が副作用なしのリスト処理の場合とか。



480 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:22:37 ]
正直言って思わない。1分で作れるし。

481 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:23:49 ]
setfみたいのならいいけど、
〜-set!が、コンテナの数だけあるのも、なんだかな。

やっぱOOが必要なんだろうけど、
プログラミング業界で一番OOに盛り上がりがないからな。
CLOSの頃と違って。

482 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:29:42 ]
とりあえずlist-set相当は無いらしいという事は判ったので
この話は終わりますね。

>>481
OOというよりイディオムとしてのインターフェースは統一した方が
判りやすいと考えてるんですが。(今のところOOは必要と思ったことないです)

483 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 01:32:39 ]
>>480みたいな人が多くて、
方言上等!みたいなのがこの世界です。

484 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 04:11:35 ]
君が思ってるほどよく使われるイディオムでは無いってこと。ベクタってものがあるから。

485 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 05:03:08 ]
>>481
setf 的な set! だったら srfi にあるね。
srfi.schemers.org/srfi-17/srfi-17.html

486 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 09:39:14 ]
>>482
> (今のところOOは必要と思ったことないです)

今のところlist-set!は必要と思ったことないです



487 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 17:45:40 ]
クラス作ってどうこうのOOじゃなくて、MP的な意味でのOOじゃだめなの?



488 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 17:53:16 ]
MPってなんや

489 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 18:20:21 ]
Meta Programmingちゃいまっか?

490 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:15:23 ]
MP = Message Passing

491 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 19:46:49 ]
Magic Point

492 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:33:35 ]
もっとぷにぷにして

493 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:34:45 ]
マッスルパワーだろ、常考

494 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 20:56:36 ]
『みじめな ポインター』じゃねーの?

495 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 21:30:32 ]
もぷー

496 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 21:38:49 ]
お前ら何言ってるんだ。
「Mですか?」の略だろ。LISP的に考えて。

497 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 00:17:01 ]
My Program?



498 名前:oWlyiBCrkzVQNj mailto:fzjqnf@zedulo.com [2007/10/19(金) 04:20:45 ]
KXW9XK <a href="nycokewromgk.com/">nycokewromgk</a>, [url=bezgtedzkmkl.com/]bezgtedzkmkl[/url], [link=ckqlcozchtel.com/]ckqlcozchtel[/link], mtedzghiaczp.com/

499 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 16:40:57 ]
バカな流れになるとこれが沸いてくるのはなんでだ

500 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 21:58:19 ]
偶然です

501 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 01:49:22 ]
以前、このスレ(だっけ)でも話題になった、eclipse用のslimeの様なもの。
swank backend を使った、開発環境が、取り上げられています。

ttp://www.ibm.com/developerworks/library/os-eclipse-lispcusp/index.html

screen shotを見る限りでは、現時点でも、ずいぶんイケてるっぽいです。

わたしは、eclipse環境を使ってないので、今すぐに試す気はしませんが、
補完候補が、GUIで縦に表示されるのを、そのうち味わってみたいです。

502 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 14:23:53 ]
Schemeってなんか使いやすくないですか?

503 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 23:05:43 ]
そうですね

504 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 23:49:33 ]
だよね

505 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 00:30:44 ]
やっぱりね

506 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 01:03:12 ]
でもそんなの関係ねー

507 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 20:39:42 ]
はい、おっぱっぴー



508 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:30:00 ]
前にもそういう一発系のネタあったよね。
どんなだったか忘れちゃったけど。
LISPの永続性と真逆の関係だね。

509 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:16:11 ]
YコンビネータってなんでY ?
「ワイはコンビネーターや」ってことかい?

510 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:57:15 ]
そんなあほな

511 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 03:00:23 ]
「ワイは猿や!コンビネーター猿や!」
「必殺、包み包み!」

512 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 12:20:54 ]
なにゆうてまんねん

513 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:13:59 ]
ポール・グレアムが耳だけ出した覆面かぶってるって話

514 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 01:41:26 ]
>>513
それはポール大好きグラハム・ちゃっぷまん@世界の料理ショーじゃまいか?

515 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 13:57:51 ]
グラハム・カー@世界の料理ショー
ビリー・グラハム@テレビ宣教師

516 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 15:37:32 ]
このスレは勉強になります

517 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 11:46:07 ]
うそをつかないでください



518 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 12:25:45 ]
グラハム・ボネット@横山やすし

519 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 20:31:26 ]
r6rsってスタンダードになれなさそうだよねぇ
後始末が面倒くさそう

520 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:28:03 ]
Cltl3はまだですか?

521 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 00:05:28 ]
君が書くんだ

522 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 07:33:45 ]
電話帳なみにぶ厚い仕様書を頼む

523 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 10:32:29 ]
黒板に書けば1枚でも分厚いよ

524 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 12:31:12 ]
うちの村の電話帳は薄いよ

525 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 17:33:45 ]
>>520
アレをかける人で執筆時間がとれる人いるんだろうか。


526 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 19:22:26 ]
GLSを拉致して・・・

527 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 23:24:20 ]
3冊ほどLisp本キボン




528 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:08:37 ]
Common Lisp the Language, 2nd Edition
On Lisp
Practical Common Lisp

529 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 04:27:03 ]
入門書がないのはナゼ。

530 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 07:48:55 ]
始めるならschemeがいいよ
CLはつまんない制約ばっかりで最初は滅入るから

531 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 12:53:03 ]
>>529
入門は一生に一度だけだから、比較的マイナーな分野だと言えよう

532 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 12:53:34 ]
>>530
そんなこたあない

533 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 14:09:03 ]
>>531
そんなこたあない


534 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 14:28:16 ]
>>528
thx
>>534-
他の皆さんは?(・∀・ )っ/凵 ⌒☆チンチン


535 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:25:23 ]
>>531
BSD類のインストーラに凝ったものが無い、というのと同じような気がする

536 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:23:43 ]
ttp://www.hi-ho.ne.jp/a_ogawa/oedit/

・マクロ(schemeインタプリタ)を実装

だって。


537 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 05:04:00 ]
>>535
浦島かよ。
PC-BSDのインストーラはLinuxみたいに凝ってるし、
FreeBSDも7からGUIインストーラが用意される予定。



538 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 09:16:35 ]
予定に過ぎないのであれば大筋合ってるじゃん

539 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 09:35:42 ]
>>537
OpenBSDのインストーラは最後の砦だw

540 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 12:11:48 ]
>>537
浦島かよ。
FreeBSDのGUIインストーラは7に入らないことが決定済み。

541 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 12:20:59 ]
もまえら、Unix板に返れ。


542 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:33:01 ]
もまえら、Unix板に変えれ。

543 名前:デフォルトの名無しさん [2007/11/06(火) 22:29:14 ]
SFUが.NETみたいに標準搭載になればいいのにねえ。
WinFXでWin32を順次置き換えていくらしいから、
もう既にWin32で囲い込みする必要もないだろうに。
サポートの手間がメンドクサイからまあ、なさそうだけど。


544 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 22:45:05 ]
マイクロカーネルだって事を M$ 自身が忘れてしまっている

545 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 00:20:35 ]
>>543
なぜこのスレで書いてるのか知らんが、Windows Vista では
Enterprise、Ultimate 版に SFU の後継である SUA が載ってるよ。

546 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 14:26:53 ]
slime専用sbcl coreをmake一発で作りたいとおもい、
sbcl-core:
rm -f ${SBCL_CORE}
sbcl <<EOF
(load "${SRC_DIR}/${PACKAGE_NAME}/swank-loader.lisp")
(save-lisp-and-die "${SBCL_CORE}")
EOF
としてみたのですがうまくいきません
どうしたらよいでしょうか。

547 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 18:49:20 ]
エラーメッセージは?

makeの継続行は最後に\
here documentでは必要ないが、
makeは一行で1 shell script。行継続しないと。ってことかな?



548 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 02:50:15 ]
schemeで
common lispの
(let ((count 0))
 (defun increment ..
 (defun decrement ..

のような処理をしたい場合はどうすればいいのでしょうか?

549 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 04:32:17 ]
>>548
(define inc #f)
(define dec #f)
(let ((count 0))
  (set! inc (lambda ...))
  (set! dec (lambda ...)))

550 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 20:42:17 ]
>>549
schemeの理論をそれほどちゃんと理解しているわけじゃないが、
厳密に言えばincrementをlambdaに束縛するのがincrementを呼ぶ前に
行われるとは限らないんじゃないか?

551 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 21:52:25 ]
(let ((count 0))
 (define inc (lambda ...))
 (define dec (lambda ...)))
ってできないの?

552 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 23:42:14 ]
最近勉強始めたんだけどschemeで作るプログラムのアーキテクチャが全然想像できない
オブジェクト指向だったらMMVCとかあるけどschemeでオブジェクト指向やってもうれしくもなんともないし

553 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:06:31 ]
うれしくなければやらなければいい。

>>551
r5rs - 5.2.2 Interanal Definition

554 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:12:47 ]
初心者で質問なんだけど、手続きが可変長引数を取るとき、
その全てを引数として他の可変長引数を取る手続きに渡すにはどうすれば良い?

(define (f1 . x)
x)
(define (f2 . x)
(f1 x))
(f2 1 2 3 4 5 6) ; ((1 2 3 4 5 6))になっちゃう(1 2 3 4 5 6)にしたい


555 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:20:39 ]
(apply f1 x)

556 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:24:09 ]
>>555
ありがとー

557 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:27:48 ]
>>552
scheme とか lisp には言語を自由に拡張できるマクロが...
なので
> プログラムのアーキテクチャ
てなものを考えてもしょうがないと思うけど...

「特定の言語とかモデルに捕らわれないで問題領域解決用の専用言語を作る」
のが lisp 系言語の流儀だと思う.





558 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:38:39 ]
Lisp : 粘土
Java : 煉瓦
Ruby : 絵の具

559 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:42:26 ]
俺言語とかDSLを作らなくても最終目的に向かう途中で実行系自体がDSLみたいな状態になる。
プログラムを作るというより実行系の環境を最終目的物に書き換えていくみたいな感じ。

粘土細工作るときの作業台全体みたいな物だと思ってるんだけどどうなんだろう。


560 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:42:57 ]
うわ、くだらねぇもの書いている間にシンプルなお答えが orz


561 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 02:20:03 ]
その点、haskellとかocamlとかどー考えてんだろ

562 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 02:44:35 ]
Haskell 実行する前に問題解決

563 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 07:59:36 ]
>>551
出来る
けど内部定義のdefineだから
グローバルな束縛にならない

一方set!なら可視な束縛の変更だから
グローバルな環境の変更もできる

553がシンプルな答えだけど

564 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 08:42:26 ]
>>563 の言うようにset!がシンプルだけど,
let環境の値としてinc, dec(を含むリスト)を返し,それを外部でinc, decで束縛すれば...

(define tmp
 (let1 count 0
  (define (inc) ...)
  (define (dec) ...)
  (list inc dec)))

(define inc (car tmp))
(define dec (cadr tmp))

;; 自分では動くか試してない(ぉ

565 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 10:18:36 ]
それなら、defineせんでも、lambda式返せばいい。

566 名前:546 mailto:sage [2007/11/09(金) 12:24:49 ]
>547
ありがとうございます

make sbcl-core
rm -f /home/hoge/.sbcl/sbcl.core-with-slime
sbcl <<EOF
This is SBCL 0.9.17, an implementation of ANSI Common Lisp.
More information about SBCL is available at <www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* (load "../src//slime-cvs/swank-loader.lisp")
load: not found
*** Error code 127

というメッセージが出ているので、makeの問題では無いと思うんですが…


567 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 12:35:36 ]
Scheme も internal define なんて導入せず、それ以前の Lisp みたいに
define は top level をいじることにしとけばよかったのにな。
そうすれば begin の
5.1 Programs
> At the top level of a program (begin <form1> ...,) is equivalent
> to the sequence of expressions, definitions, and syntax
> definitions that form the body of the begin.
5.2.2 Internal definitions
> Wherever an internal definition may occur (begin <definition1>
> ...,) is equivalent to the sequence of definitions that form the
> body of the begin.
みたいな特別扱いも不要だし
(define x 10)
(define y x)
y => 10
(let ()
  (define x 10)
  (define y x)
  y) --> error
なんてわかりづらいこともなくなったのに。



568 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 14:36:31 ]
beginのその特別扱いってなんであるんだ?
処理系書くとき邪魔だよねえ。

しかしdefineで内部関数を書けるのは便利。
labelsとかfsetとかは醜い。書きづらいし読みづらい。

569 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 15:16:43 ]
二つ目の方が、
(begin <form1> ...)じゃないから、
(begin (begin <definition1> ...))を機械的に、
<definition1> ...とsplicingするわけにいかないのがきつい…

こっちはR6RSではないんでしょ。
・Internal definitions are now defined in term of letrec*.

トップレベルの方はライブラリがらみでまた気にするところ増えたけど。



570 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 15:48:37 ]
(begin (begin <definition1> ...))が
(begin <definition1> ...)になって、次は、
<definition1> ...でいいんじゃないのかなあ?

その辺り、R6RSの方が解釈しやすい書き方だけど。
<body> <library body> <top-level body>と、
構文上のノンターミナル使って定義してあるから。
R5RSは文章での説明が多くて理解するのに頭を使う。



571 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:44:17 ]
The Little Shemerを簡単じゃないかと思衣ながら読んでいたら、
8章の途中から泣きそうになった(高階関数のあたり)。

何とか理屈はわかったけれど、身に付くかどうか・・・
がんばってみます。


572 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:47:21 ]
>>571
おお仲間だ!
multiremberEcoとかcontinuationとか出てきたあたりで学習速度がすっごいダウンするよね

573 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:50:26 ]
The Little Shemerは、
曖昧に理解せず、身に付けさせるための本だから、
ちゃんと読み終わったら身に付くよ。

574 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 00:56:59 ]
seasonedとかreasonedはどうだった?

575 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:38:29 ]
lisp で並列分散処理プログラムを実際に書いている人は居ます?
どういった処理系もしくはライブラリを使ってますか?
やっぱりほとんどいないのかな。。

576 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:57:24 ]
3行目があるせいで釣りにしか見えん。

577 名前:575 mailto:sageま、釣り用の言葉も有った方がおもしろいでしょ。 [2007/11/10(土) 13:40:41 ]
まじめに自分もその環境でコーディングしたいと考えています。
並列プログラミングの話ってほとんど語られていないと思ったんで。



578 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 14:08:27 ]
Erlisp は期待してたんだけど、どうなったのだろう

579 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 14:09:17 ]
cmlisp とか, *lispとかの話かい???



580 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 14:36:44 ]
CL のライブラリだよ

581 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:16:14 ]
アナルlisp?

582 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 00:04:04 ]
Schemeの入門はLittle Schemerしかないのかな。
手習いや湯浅先生の入門本は入手しづらいし。

583 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 02:55:56 ]
あなりすぷ・・・

584 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 12:23:59 ]
(cons 'ちんぽ 'アナル)

585 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:54:12 ]
`(ちんぽ . アナル)

586 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 09:50:01 ]
Python実装だけど並列処理の記述はLispでやる予定の俺がいますよ


587 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:13:04 ]
みんなschemeの処理系なに使ってんの?
みんな自作?



588 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:21:59 ]
ごうしゅをつかってまつ

589 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:49:07 ]
Gauche 時々 MIT

590 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:10:25 ]
587 じゃないけど...

MIT 使ってる人は初めてだ。もし良かったら、
どんな時に Gauche じゃなくて MIT を使うか
教えて下さい。

591 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:26:12 ]
MITしか入ってない環境で作業するとき・・・。

592 名前:591 mailto:sage [2007/11/12(月) 23:50:57 ]
職場で借りてるファイルサーバになぜか入ってて時々使ってるって程度の話ね。

593 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:58:55 ]
多くのディストリとかcygwinに、わりとデフォで入っているという理由で guile を使うことがある

594 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:16:13 ]
>>591,592
どうもありがとう。何か拘りがあって使ってらっしゃるのかと思いました。

595 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:46:26 ]
>>587
slang

596 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:25:24 ]
リストの中からある要素を探して、その要素の前にあるオブジェクトを破壊的に挿入する
にはどうしたらいいでしょう。例えば、3 の前に 'a を挿入したいです。
(let ((x 3))
(let ((ls (list 1 2 3 4 5)))
;; ここ
ls))
=>(1 2 'a 3 4 5)


597 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 02:27:53 ]
俺初心者で悪いけど、こういうこと?

(define (find-insert lst fnd val)
(define (find-cdr lst f)
(if (equal? (cadr lst) f)
lst
(find-cdr (cdr lst) f)))
(let ((l (find-cdr lst fnd)))
(set! (cdr l) (cons val (cdr l)))))

(define ls '(1 2 3 4 5))
(define x 3)
(find-insert ls x 'a)
(write ls)



598 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 04:01:03 ]
>>597
お付き合いいただいてどうもです。ヒントになりました。
setf を使えば良かったみたいです。3 の後になってしまいますが、
次善の策としてこれでも良いです。
(let ((x 3))
(let ((ls (list 1 2 3 4 5)))
(let ((place (member x ls)))
(setf (cdr place) (cons 'a (cdr place))))
ls))
=>(1 2 3 a 4 5)

599 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 12:00:26 ]
>>587
俺はPLTだな…IDEが付いてくるからって理由だけだが。

600 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 12:14:47 ]
gaucheとscm。
scmはdefaultでreadlineがあるからちょこちょこ書くときはこっち。

601 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:00:34 ]
scheme48(とguile)
有理数が使えていろんな環境で使えるのはこれくらいしかない(と思う)
ocsなんかも面白そうだけどまだあんまり使ったことない

602 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:05:51 ]
一度どれか使っちゃうと、
独自仕様部分のポーティングが面倒になる。

603 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 18:51:27 ]
つまりスキームなんてどれも使うな、コモンリスプ最強ってことか?

604 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:17:53 ]
>>603
Common Lispの処理系が動かない環境もあるんでつ(´・ω・`)

605 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 01:05:28 ]
どんな環境?

606 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 06:55:03 ]
zaurus-openbsdとか

607 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:22:12 ]
clispくらい動きそうだけどな



608 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 13:58:42 ]
つPalmOS

609 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 18:19:10 ]
>>607
動きそうだけど動かないですねぇ
clispもGCLもGaucheもMzSchemeもGambit-Cも

Gambit-Cはビルドは成功するけどリーダがいかれてて
3 -> 0
8 -> unbound error
とかになります
ソースが機械翻訳のCだから追う気になれないけど
規則性のあるバグだから見つかればつぶせそうです

scheme48は依存ライブラリもなく、GCも多倍長計算も有理数も自前なのにi386 onlyでポーティングされてるのが疑問
だから自分でパッケージ作っていれてます

610 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:48:16 ]
Linuxならi386以外にもportされてるけどな
ttp://packages.debian.org/sid/scheme48

611 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:12:44 ]
というかzaurusなら普通にscheme48のパッケージが流通しているわけであるが。

感度の悪いアンテナ持ってるやつってどうよ?

612 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 06:53:05 ]
>>611
zaurus-"OpenBSD"の話です
i386のみにportingされているのは事実です
i386じゃなくても動くのも事実ですけどね

613 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:42:01 ]
好きで使っているOSへの愚痴は、そのOSの板でやってくれ。

614 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:20:53 ]
そう、ここは好きじゃないのに使わされている OS への愚痴を書き込む場所です

615 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:48:10 ]
好きでも嫌いでもないOSの愚痴はどこに書き込んでもいいです

616 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:51:51 ]
押忍

617 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:58:29 ]
OCS ってこれか。

will.iki.fi/software/ocs/



618 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:17:35 ]
御意

619 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 13:14:54 ]
>>600
ledit使えばいいんじゃね? > readline

$ ledit gosh -i

$ alias gau='ledit gosh -i'してる。

620 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 15:57:12 ]
SECDR-Schemeってソース見てみたいんだけど、誰か持ってない?
テンプレのリンクは切れてて見れませんでしたわ。

621 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:48:16 ]
以前ダウンロードしたときはリンク切れから適当にURLを推定して当てた記憶があるですよ。

622 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 10:39:21 ]
だから、そのダウンロードしたソースを持ってないでしょうか?
って聞いてるんだわ。(^〜^)

623 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 10:49:39 ]

             「 ̄ `ヽ、   ______
             L -‐ '´  ̄ `ヽ- 、   〉
          /           ヽ\ /
        //  /  /      ヽヽ ヽ〈
        ヽ、レ! {  ム-t ハ li 、 i i  }ト、
         ハN | lヽ八l ヽjハVヽ、i j/ l !
         /ハ. l ヽk== , r= 、ノルl lL」
        ヽN、ハ l   ┌‐┐   ゙l ノl l
           ヽトjヽ、 ヽ_ノ   ノ//レ′
    r777777777tノ` ー r ´フ/′
   j´ニゝ        l|ヽ  _/`\
   〈 ‐ 持ってるが lト、 /   〃ゝ、
   〈、ネ..         .lF V=="/ イl.
   ト |お前の態度が とニヽ二/  l
   ヽ.|l         〈ー-   ! `ヽ.   l
      |l気に入らない lトニ、_ノ     ヾ、!
      |l__________l|   \    ソ

624 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 13:49:48 ]
CommonLispやSchemeでは、
2個以上の引数を取るandやorはマクロで定義されている様なんですが、
関数を使っても定義できるはずです。
なぜマクロを使っているのでしょうか。

625 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:01:08 ]
無駄な評価をふせげるから。

626 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:02:36 ]
そんで、大昔は、特殊形式でやる流儀もあったけど、
今はマクロで済むことはマクロでやる流儀。

627 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:39:20 ]
誰かfranzセミナー行った人、内容教えて



628 名前:624 mailto:sage [2007/11/23(金) 14:55:37 ]
>625
関数だと引数をみんな評価してしまうけど、
マクロならしないってことですか?

>626
すいません
特殊形式とマクロの違いがよくわかってないんですが、
引数を関数とは違う順序で評価するという点で同じで、
そのうち特殊形式はプリミティブなものと言うような理解で
いいんでしょうか。



629 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:32:46 ]
>>628
andもorも、「左から見ていって、途中でオシマイという運びになったらその後ろは評価しない」ものでしょ?
でも関数は「まずすべての引数を評価する」機構なわけで、それではandもorも実現できない。
一方、マクロは引数をまったく評価しない。だからこれを使って定義されている。

特殊形式は、すべての引数を評価するとは限らない関数、みたいなもので、
想像の通り、プリミティブなものだ。

てかこの辺り、Lispの勉強の初日や二日目の範疇じゃないか?

630 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 22:22:56 ]
遅延評価を導入すれば関数として統一的に定義じゃないかという吊りかも

631 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 09:36:14 ]
脳内のイメージが遅延評価な人なのかもしれん。Haskell でも試してみたら?

632 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 11:00:01 ]
>>628
なんのために書籍の「ON LISP」があると思っているのか

633 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 11:28:27 ]
賢い人を更に教育するため。

私たちにとっては,On Lisp でレベルアップして,
更にいろいろ教えてくれる様になったその人たちに
より突っ込んだを質問が出来るようになる。だな。

634 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 13:54:45 ]
初心者はANSI Common Lispがいいよ。On Lispはちょっと応用すぎる。
あとはEmacs Lisp Tutorialとかも参考になるだろうね。

635 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 14:04:06 ]
Scheme→Common Lispだと拒否しちゃいそうだけど
Common Lisp→Schemeだと使い分けられそう。

636 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 14:08:24 ]
プラットフォームがBlackboardならScheme、それ以外ならCommon Lisp。

637 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 15:35:48 ]
引数の評価についてはSICPでも超序盤で触れてるね



638 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 16:42:39 ]
>>633のような輩に無料で教えるほど賢い人は暇ではないだろうな

639 名前:624 mailto:sage [2007/11/24(土) 22:13:01 ]
>629
>andもorも、「左から見ていって、途中でオシマイという運びになったらその後ろは評価しない」ものでしょ?
なるほど、単なる論理演算かと思ってました
ありがとうございます

>630,631
最近Haskellをかじって
うはwwwマクロもういらねんじゃね?www
とかいって喜んでたんですが、やっぱりそれであってるんですね

640 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 02:35:01 ]
>>115-128 あたりで同じやりとりをした気がするけど、遅延評価でも関数じゃ setq とかが書けないんで、マクロは必要。

641 名前:デフォルトの名無しさん [2007/11/25(日) 03:53:03 ]
マクロがあってもスペシャルフォームは書けないはずだけど。

642 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 10:05:48 ]
setq って quote して set するだけだと思ってたけど、他に何かしてたっけ?

643 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 13:39:38 ]
遅延評価でquoteが書けるか?

644 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:05:00 ]
>>642
説得してる

645 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 16:12:29 ]
>>642
それだと(多くの処理系では)グローバルしかセットできない

646 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:16:37 ]
なるほど。
# 普段 ELisp しか使ってないから、 set するだけだと思ってた。

じゃ、 case とかが書けないからマクロは必要、に訂正かな。

647 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:33:45 ]
>>635
SchemeとXyzzyLispって俺はどうすれば…。



648 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 02:05:34 ]
どうしようもないね

649 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 03:29:28 ]
>>635
俺は逆だなぁ、CLだとなんでも揃うのだけどSchemeだと原理主義ありきなんで妥協してくれないから。


650 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:05:23 ]
原理主義ってどんなの?
「プリミティブがあれば充分」論者はR6RSで少なくなっていくと思う。
moduleとかOOとか。

651 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:21:24 ]
じゃあ、さっさと R6RS を実装しやがれ

652 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:33:55 ]
あんなR6RSを正直に完全実装するのがでてくるかな?
リファレンス実装以外で。

653 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:38:14 ]
今のメジャーな処理系が実装するというよりは、新しい処理系で R6RS 準拠ってのが出てきそうな気がする

654 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:57:18 ]
SchemeのC++0xやー

655 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:28:37 ]
個人的にはR5RSにリードマクロとsyntax-caseと{read,write}-byteとfile-seekとsystemと環境を明に操作する手段とimplicit forceとfull numeric towerとFFIさえあれば良いだけなんだけどなぁ
実装してる処理系はあるけど標準化されてないってのがネック
UTF-8ファイルの読み書きで1バイト読み込むのか1文字読み込むのか実装依存(1文字読み込む実装は知らないけど)だし

構文オブジェクトもファーストクラスにして
(define foo (syntax ...なんて構文で定義したり
applyの第1引数に構文オブジェクトを受け取るように出来たらいいのに
でもそうすると構文木解釈系でしか動かないだろうから相当遅くなるし
そもそも合成構文はevalされる前に展開されるから無理か

ただCLと違って値も関数もdefineで定義できるのに
構文定義だけdefine-syntaxってのが美しくない気がする
define-syntaxは処理系に対して、defineは実行系に対しての構文だと割り切るしか無いか

656 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:57:37 ]
そういえば以前PCLの翻訳が進んでるって話題でてたけどどうなったんだろう。
中止になったのなら半分まで進めて止まってる翻訳再開しようかな・・・

657 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:43:16 ]
>>656 あなたは「RHG読書会」というお告げが聞こえたような気がした --more--



658 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:59:24 ]
>>656
Lisp関係の書籍出している出版社に問い合わせてみては?
既に進んでいるなら、翻訳者陣に参加して加速してくださいw

659 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:42:48 ]
>655
ハゲド
ごちゃごちゃしたいならCLに行けば良いんだから
schemeは原理主義的な性格を守っていってほしい

構文オブジェクトは普通のマクロ入れると
コンパイラのコード生成ルールを吐いてくれるように出来ないかな?
ほんとに動的なマクロだと無理だろうけど...

660 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 13:58:46 ]
continuation の挙動について理解できていない点があり,
以下のような 2 種類の Scheme コードを書いてみました.

;;; case-A ----------------------------------------
(define continuation-A #f)
(define procedure
(lambda (n)
(define counter-A n)
(call-with-current-continuation
(lambda (k)
(set! continuation-A k)
(write counter-A) (newline)
)
)
(set! counter-A (+ counter-A 1))
(write counter-A) (newline)
)
)

(procedure 0) ; ==> 0 と 1 が表示される
(continuation-A #t) ; ==> 2 が表示される
(continuation-A #t) ; ==> 3 が表示される
(continuation-A #t) ; ==> 4 が表示される

;;; case-A おわり

661 名前:660 mailto:sage [2007/12/06(木) 14:00:00 ]
;;; case-B ----------------------------------------
(define continuation-B #f)
(do ((counter-B 0 (+ counter-B 1)))
((= counter-B 10) 'finished)
(if (= counter-B 5) (call-with-current-continuation (lambda (k) (set! continuation-B k))))
(write counter-B) (newline))
; ==> 1 2 3 ... 7 8 9 finished が表示される

;;プログラム実行部
(continuation-B #t) ; ==> 5 6 7 8 9 finished が表示される
(continuation-B #t) ; ==> 5 6 7 8 9 finished が表示される
(continuation-B #t) ; ==> 5 6 7 8 9 finished が表示される

;;; case-Bおわり

662 名前:660 mailto:sage [2007/12/06(木) 14:02:18 ]
case-A では
continuation-A が生成されたときから変数 counter-A が
ずっと見えたままであり,
continuation-A の呼び出しごとに counter-A の束縛値が
1 ずつインクリメントされていく.
(continuation-A が呼ばれるたびに,
「continuation-A 生成時における counter-A の束縛値」である 0 に
いちいちリセットされることはない.)

case-B では
continuation-B が呼ばれるたびに counter-B の束縛値は
「continuation-B 生成時の counter-B の束縛値」である 5 に
リセットされる.

多分基本的なところが理解できていないのだと思いますが,
この 2 つのコードにおける continuation 上の変数の見えかたについて
なぜこのような違いが生ずるか,お教えいただければ助かります.

663 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 15:14:39 ]
わざわざdoなんか使うから話が余計ややこしくなってる。
doを再帰に展開してごらん。

664 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 15:14:49 ]
doは再帰だから。
doのdefine-syntaxがR5RSに書いてあるから読んでみたらどうよ?
束縛環境を良く考えると分かるはず。↓while版

(define continuation-B #f)
(let ((counter-B 0))
(while (< counter-B 10)
(if (= counter-B 5)
(call-with-current-continuation (lambda (k) (set! continuation-B k))))
(write counter-B)
(write-char #\ )
(inc! counter-B))
(print 'finished))
(continuation-B #t)
(continuation-B #t)
(continuation-B #t)


665 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 15:15:39 ]
do は counter-B の値を破壊的に書き換えてない。
新しい環境作って、そこで同じ名前に別の値を束縛してるだけ。
だから元の場所に戻ると、そこの環境にはそのときの値が残ってるから、その値が参照される。

set! は破壊的に書き換えるから、元の値が残ってない。

666 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 04:31:10 ]
Clojure試してるんだけどClassCastExceptionばかりで使い物になんないよ……
どうなってんのこれ。

667 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 20:01:29 ]
clusure じゃないの?って検索してみたら…

java スレ行け。



668 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 20:02:20 ]
× clusure
○ closure

669 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 01:05:55 ]
>>666 作ってるよーという話がでたばかりの言語に安定性を期待しすぎなんじゃないの?

670 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 02:36:47 ]
Clojureは広い意味でのLISPっぽさがあっていいんじゃないの?

671 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 08:02:24 ]
一般的なLispとの違いがまとめてあるけど、
clojure.sourceforge.net/reference/lisps.html
どう考えてもLispでしょ。

Haskell方面で良く使われているSTM、
それにreactive Agent使った並列Lispの一種で面白いと思う。
STMでいろいろ遊んでみたかったんで試してみます。>>666サンクス

>>667みたいな馬鹿はなんなんだろ。

672 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 09:36:17 ]
java で書かれたなんらかの言語の実装系に問題があるなら
なんらかの言語は無関係と思うが?
ClassCastException って java の例外でそ?

673 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 09:39:16 ]
661=671乙

javaで書かれた何かの言語の処理の実装系に問題があるなら
その何かの言語よりjavaに通じた人に質問する方が効果あると思うが?

ClassCastException は java の例外でしょ?

674 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 09:43:08 ]
と考えたが、Cで書かれたschemeの処理系に問題があった場合、
C使いだけでなくschemerに聞くのも有りか…

javaグラマに偏見あるな俺は

675 名前:671 mailto:sage [2007/12/08(土) 10:12:13 ]
>>673
>>664は俺なんだけど何で分かったの!びっくり!
と思ったら>>661 orz

>>666の間違いかよ!

676 名前:673 mailto:sage [2007/12/08(土) 10:52:39 ]
>> 675

誤りについては御寛恕賜りたく、

677 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:54:42 ]
>>674
あるみたいだね



678 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:17:21 ]
最初はJDK1,7のクロージャの実装がまだバグが多くて愚痴った内容を誤爆していたのかと思った。
JVMの上で動くClojureというLISP処理系の話とは思わなかった。

679 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:53:24 ]
>>671
>>>667みたいな馬鹿はなんなんだろ。

2ch だからといって安直に馬鹿とかアホとか書くのは止めた方が良いよ。

680 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:20:34 ]
ポメラニアンファック! ヽ(`Д´)ノ

681 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 04:58:51 ]
>>679
書いた本人が安直な馬鹿だから、言ってもしょうがない。

682 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 19:56:01 ]
>>666
ClassCastExceptionなんていうJavaの例外が出てる時点で、処理系の不具合だろうが。
不具合あるなら、ソース読むか、コミュニティに報告するかだろ。
それができないんだったら、安定版がリリースするまでおとなしく黙ってろ。

683 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 01:39:04 ]
>不具合あるなら、ソース読むか、コミュニティに報告するか
あるいは愚痴を言う、だろ?

そのキツい態度はこのスレに取って良い未来を生み出さないと思うのだが。


684 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 04:00:09 ]
>>683
その優しい態度も良い未来を生み出さないという意味では同じであろう。
つまり、好きにそれぞれの芸風でやってくれ。w

685 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 08:09:12 ]
俺は優しくしているつもりはない。
ただフレームを生み出すよりは無視する方がまだマシだというお馴染みの主張をしたいだけで


686 名前:デフォルトの名無しさん [2007/12/11(火) 10:12:56 ]
R6RSなんかより、MS謹製のLisp#に期待だなぁ。
強力なIDEの付いたVisual Lisp# 2008出してくれないかな。。

687 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 10:22:16 ]
俺は型付き Lisp が欲しいな。勿論型推論込みで。



688 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 12:00:24 ]
インタープリタで型推論とか出来るんだろうか

689 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 12:44:23 ]
hugsとかやってるじゃん

690 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 19:11:27 ]
>>686
どんなMS独自仕様が拡張されているの?

691 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 21:02:04 ]
OCamlなんかもインタプリタで型推論してますね

ところでScheme48でscmファイルからモジュールを,openする方法ってないんでしょうか?
モジュールを,openしたヒープイメージを,dumpか,buildする方法だとなんか大げさだし
標準入力で,openさせて-a batchする方法だと標準入力が塞がっちゃうし
(open structure-name)とかで,openできればいいんですけど…

692 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 21:59:56 ]
>>690
.NET Framework をシームレスに呼べるようになってたりするのだろう。w
それはそれで便利かも。

693 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:16:56 ]
F#ですか

694 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:33:57 ]
MSによりLisp#が開発される暁には、.net frameworkを呼べるようになるだけではなく、
Java→C#で行われたような言語レベルでの大幅な強化・改善が行われるだろう。

695 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:38:10 ]
丸括弧が無くなるんじゃねーの

696 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:55:36 ]
あの会社としては、CLtLとかRxRSなんて気にしないで新標準を作っちゃうんだろうけど、
それでも依然として LISP ではあるところが LISP の包容力の大きさだ。w
まじでやってほしい気がしてきた。

697 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 10:45:55 ]
lispであるための条件って
表現がS式であることしか無いような気がしてきた



698 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 16:29:24 ]
M式の立場は?

699 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:06:11 ]
SM式?

700 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 20:24:54 ]
665で1文字読み込む実装は知らないなんて書きましたけど
無知すぎました
エンコーディングさえ設定すれば1文字読み込むことも出来る実装がちゃんとあるんですね

701 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 09:49:24 ]
>>695
( ) の代わりに全部 { } で書くの?

702 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:35:11 ]
>>700
>665で1文字読み込む実装は知らないなんて書きましたけど

665にはそんな記述見あたらないんだけど…
655の間違いだな

703 名前:デフォルトの名無しさん [2007/12/13(木) 22:19:54 ]
>>695
dylanのことかーっ

704 名前:691 mailto:sage [2007/12/14(金) 01:07:29 ]
slib/scheme48.initに答えが書いてありますねorz
slibはscheme48を冷遇してるから期待してなかったんですが…

705 名前:700 mailto:sage [2007/12/14(金) 20:29:02 ]
>>702
訂正どうもです

706 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:11:54 ]
『Gaucheプログラミング』

Kahuaプロジェクト 著
川合 史朗 監修
ISBN978-4-87311-348-7
定価3,360円

707 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 23:50:51 ]
>>706
発売日は決まったの?



708 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 07:58:50 ]
>>706
「プログラミングGauche」じゃなかったっけ?


709 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:43:01 ]
「プロGaucheグラミング」

710 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:46:56 ]
「プGロaグuラcミhンeグ」

711 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:50:12 ]
それが出たら終了だな

712 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 09:29:05 ]
「プログラミング」

   ∩___∩
   | ノ       ヽ
  /  ●   ● | G、Gauche!
  |  ///( _●_)//ミ
 彡、  /⌒)(⌒ヽノ
  ./  /  / \ \
  l   ノ    `ー‐'


713 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 12:14:48 ]
ガウチェ

714 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:26:12 ]
assqとassocはeqとequalの違いがあると本に書いてありました。
でも、どんな場合に違いがでるのかわからないので説明があるどこかのURLを教えてください。
お願いします。

715 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:49:32 ]
>>714
eqとequalの違いは判る人?
それすら判らない人?

716 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:50:56 ]
>>714
www.google.co.jp/search?q=eq+equal

717 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:35:24 ]
>>714
"Comparator"の違い。



718 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:37:57 ]
>>715
わかりません。

>>716
やってみましたが下記のような感じで書いてあり、いまいち初心者にはピンと来ないのです。

eq
二つのオブジェクト(実体)が同じものの時。
実体が同じということは、その内容が変われば、他方の内容もそれにつれて変わるような関係。
シンボルや、整数値の場合は、名前や値が同じだけで同じと判別する。
equal
中身が同じものを指しているなら真。

719 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:49:29 ]
>>714
一致する場合はこう。

(assq 'a '((a b) (c d))) ; => (a b)
(assoc 'a '((a b) (c d))) ; => (a b)

違いは以下のような場合。実行してみるとこういう違いがある。

(assq '(4 5) '(((1 2) 3) ((4 5) 6))) ; => #f
(assoc '(4 5) '(((1 2) 3) ((4 5) 6))) ; => ((4 5) 6)

>>718の説明から理解するのは難しい。

720 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:50:39 ]
>>718
Javaの == と equals との関係に似ている
eq はポインタ同値

721 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 18:59:02 ]
>>718は変。
eq
< 二つの引数が同じオブジェクトなら真。
equal
< 二つの引数が別のオブジェクトでも中身が同じなら真。

722 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:09:49 ]
>>718
うるさいことを言わなければ、は以下のような使い分けになる。

・シンボルであることが明らかな場合は eq を使うことができる。(eqのほうが速い)
・そうでないときは equal が安全。
・その中間として eql ってのがある。構造のあるもの(リスト・文字列・配列など)でないことが
判っていればこちらのほうが速い。
・数値同士だと判ってるなら =、文字列同士なら string= がたぶん速い。

なぜこんなことになってるか知りたければもっと勉強するべし。

723 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:10:00 ]
>>719-721
ありがとうございます。すごくよくわかりました。
(assq '(4 5) '(((1 2) 3) ((4 5) 6))) ; => #f
(assoc '(4 5) '(((1 2) 3) ((4 5) 6))) ; => ((4 5) 6)
の場合には(4 5)が別々のオブジェクトをさすポインタだからeqでは偽になるんですね。
でもequalだとオブジェクトが同じだから真になるんですね。

724 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:19:45 ]
>>718
assqの実装は大体こんな感じになっている。

(defun assq (key alist)
(cond
((null alist) nil)
((eq key (car (car alist))) (car alist))
(t (assq key (cdr alist)))))

assocならこう

(defun assoc (key alist)
(cond
((null alist) nil)
((equal key (car (car alist))) (car alist))
(t (assq key (cdr alist)))))

>>724が言うようにeqlや=やstring=を使えば用途に応じて高速なものが使える。

725 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:25:35 ]
>>723
> でもequalだとオブジェクトが同じだから真になるんですね。
< でもequalだとオブジェクトの中身が同じだから真になるんですね。


726 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 19:34:35 ]
>>722>>724>>725
ありがとうございます。

>>722
むずかしいけど、>>724の解説をみて、使うと便利だということは理解できました (^ ^;

>>724
そういうプログラムなんですね。eqとequalの使われてるところとか参考になりました。

>>725
ありがとうございます。そういうことを書いたつもりでした。でもプログラミングのことを正確に話し言葉にするのって難しいです。

727 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 20:32:28 ]
例えばここにSBCLのeq, eql, equalのソースがある
ttp://sbcl.cvs.sourceforge.net/sbcl/sbcl/src/code/pred.lisp?view=markup
> 196 ;;;; equality predicates
eqの実質的な定義はちょっと見つけられなかったけど...



728 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 20:36:48 ]
>>424
最後の行が間違えてるね。assq=>assoc

(defun assoc (key alist)
(cond
((null alist) nil)
((equal key (car (car alist))) (car alist))
(t (assoc key (cdr alist)))))

729 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:54:45 ]
(defun sqrt (x)
(defun good-enough? (guess)
(< (abs (- (square guess) x)) 0.001))
(defun improve (guess)
(average guess (/ x guess)))
(defun sqrt-iter (guess)
(if (good-enough? guess)
guess
(sqrt-iter (improve guess))))
(sqrt-iter 1.0))

(defun average (a b) (/ (+ a b) 2))

(defun square (x) (* x x))

(sqrt 2)
1.414216

730 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:14:28 ]
随分と荒い収束判定だな

731 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:27:49 ]
>>730
どこを修正すると改善されるか?という問題かな?

732 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:35:11 ]
無理せず Scheme 使えば…… define と defun は違うよ。とオモタ

733 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 00:54:38 ]
>>732
Schemeを使わなくてもCLにはlabelsがあるよ。とオモタ

734 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:38:25 ]
>>727
「実質的な」ってどういう意味?

735 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 12:26:37 ]
自問自答w

翻訳系eq実装の事ね。
src/compiler/x86/pred.lisp

eqlは、
src/compiler/x86/arith.lisp
src/compiler/x86/float.lisp
src/compiler/src/trans.lisp
あたり。



736 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 02:31:46 ]
jmuk(笑) Haskell(笑)

737 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:35:02 ]
今日の発見

(atom '(1 2 3)) ; => nil
(atom (quote ())) ;=> t

空リストがアトムだと知らなかった。 orz



738 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:39:40 ]
(listp '())
t

リストでもある

739 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 23:58:26 ]
(defun . (atom . ((x . nil) . ((not . ((consp . (x . nil))))))))

740 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:01:57 ]
CLなら()はquoteしなくてもいいんじゃなかったっけ?
Schemeならquoteがいるけど
Guileは()も#(...)も自己評価的でRnRSとはだいぶ違う(Schemeの中ではCL寄り?)
R5RSに準拠してくれたら乗り換えてもいいかなと思うんだけど

741 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 02:14:52 ]
>>737
nilって知ってる?

742 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 08:44:38 ]
(atomp '下條) => t

743 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 12:32:51 ]
(atomp '鉄腕) => t

744 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 16:01:08 ]
(atomp 'フランツ) => t
あれ?

745 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 18:48:24 ]
てか、atomp でいいの?

746 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:13:30 ]
>>738
listpとか

(null ())
t

とかも教科書では出てくるけどatomはあまり使わないかな。記号処理では使うけど。



747 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 20:46:24 ]
>>745

ホントは良くない。



748 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 14:15:26 ]
Common Lisp:
(let ((x)) x) => NIL
Scheme:
(let ((x)) x) -> ERROR
Unspecific値が返るかと密かに期待したんですけど
CLと違ってSchemeではletはlambdaの派生式だから当然と言えば当然ですね
Unspecific値を手軽に得るには(if #f #f)しかないのかな?

749 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:22:39 ]
>>728
Scheme版ならこんな感じ。

(define assoc
(lambda (key alist)
(cond ((null alist) nil)
((equal key (car (car alist))) (car alist))
(else (assoc key (cdr alist))))))

lambdaとelseを使ってみた。

750 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 00:26:32 ]
SchemeかLispで書いてあるアルゴリズムの教科書を教えてください。

751 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 01:28:38 ]
>>748
Schemeの文法良く調べろよ。

752 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 04:05:38 ]
(define assoc
 (lambda (key alist)
  (cond ((null? alist)
       #f)
      ((equal? key (caar alist)))
       (car alist))
      (else
       (assoc key (cdr alist))))))

753 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:54:21 ]
>>752
乙!
null?だよね。間違ってたw
あとcaarの方が簡潔だね。

754 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:55:22 ]
>>751
文法はアルゴリズムじゃないぜw

755 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:57:38 ]
>>754
アルゴリズムの話なんてしてないだろw

756 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:00:54 ]
>>750
釣りかもしれないけどSICPとかどうよ?

757 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:03:46 ]
>>755
はぁ?

>750 名前:デフォルトの名無しさん 投稿日:2007/12/20(木) 00:26:32
>SchemeかLispで書いてあるアルゴリズムの教科書を教えてください。
>
>
>751 名前:デフォルトの名無しさん 投稿日:2007/12/20(木) 01:28:38
>>>748
>Schemeの文法良く調べろよ。
>
>754 名前:デフォルトの名無しさん 投稿日:2007/12/20(木) 17:55:22
>>>751
>文法はアルゴリズムじゃないぜw
>
>
>755 名前:デフォルトの名無しさん 投稿日:2007/12/20(木) 17:57:38
>>>754
>アルゴリズムの話なんてしてないだろw

アルゴリズムの話じゃなきゃなんなの?



758 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:30:18 ]
これは新手の荒しか?







759 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:34:33 ]
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(

アンカーをもう一度見直すんだ

760 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:58:27 ]
>>759
わはー、おっちょこちょいはワシだけじゃなかったらすぃ


761 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:58:29 ]
>>754 が勘違いしたってことでいいのか?


762 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 20:15:05 ]
Lisp/Schemeでセジウィックみたいなアルゴリズムの本って思いつかないな?
SICPは良い本だけど辞書的ではないしなぁ。

763 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 21:05:07 ]
>>752

(define (assoc key alist)
 (and alist
  (let loop ((ls alist))
   (if (equal? key (caar ls))
    (car ls)
     (loop (cdr ls))))))


764 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 21:10:53 ]
関数型という範疇であればアルゴリズムの本はあるよ。MLだけど。

Purely Functional Data Structures

Algorithms: A Functional Programming Approach

765 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:08:20 ]
>>749さんのは動かなかったので修正しておきました。
(define assoc
(lambda (key alist)
(cond
((null? alist) #f)
((equal? key (car (car alist))) (car alist))
(else (assoc key (cdr alist))))))

>>752さんのも動かなかったので修正しておきました。
(define assoc
(lambda (key alist)
(cond
((null? alist) #f)
((equal? key (caar alist)) (car alist))
(else (assoc key (cdr alist))))))

>>763さんのは動きました。loopの使い方がイイ感じですね。

766 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:38:07 ]
Lispで

(setq pref-alist
'(("山梨県" . "甲府市")
("神奈川県" . "横浜市")
("愛知県" . "名古屋市")
("茨城県" . "水戸市")))

とやっているのをschemeではどのように書けばよいのでしょうか?お願いします。

767 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:40:38 ]
トップレベルなら setq を define にするだけだべ



768 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:06:44 ]
>>767
gaucheでそうやってみると

gosh> *** READ-ERROR: Read error at "c:/meadow/test-assoc.scm":line 43: EOF encountered in a string literal: "壤壤壤「壤ィ"
Stack Trace:

となるので間違っているのかと思いまして。日本語が上手く通っていないだけなんですね。ちょっとがっかりですが納得できました。有り難うございます。

769 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:15:17 ]
英語で

(define pref-alist
'(("yamanashi" . "kofu")
("kanagawa" . "yokohama")
("aichi" . "nagoya")
("ibaraki" . "mito")))

と書いて、
>

c-c c-l ファイル名
したあと

>gosh> (assoc "ibaraki" pref-alist)
("ibaraki" . "mito")

と出来ました。お騒がせしました。utf-8が上手く行ってないようです。

770 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:24:35 ]
c-x return f utf-8 return
してからセーブしたら解決しました。
Gaucheの仕様がコンソール上ではsjisでOKなのに、ファイルだとutf-8しか受け付けないというのがわかっていなかったのが原因でした。

771 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 00:46:35 ]
>>748
> (let ((x)) x) -> ERROR

これはletの返り値じゃなくて、文法エラーだぜ。
初期値省略は許されてない!


772 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 01:09:49 ]
>>765
> >>763さんのは動きました。
動かないと思うんですが


773 名前:748 mailto:sage [2007/12/21(金) 06:38:07 ]
=>が返り値
->が結果のつもりで書き分けたんですが…


774 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 07:23:25 ]
ttp://page13.auctions.yahoo.co.jp/jp/auction/r41896772
>希望落札価格:10,000 円

(; ・`д・´) な、なんだってー!! (`・д´・ ;)

775 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 08:08:30 ]
amazonのマーケットプレイスでの「入門Scheme」が\12,000だからなぁ。

776 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 09:07:32 ]
>>773
> ->が結果のつもりで書き分けたんですが…
>>748では
> (let ((x)) x) -> ERROR
> Unspecific値が返るかと密かに期待したんですけど
って自分で言ってんじゃん。

> CLと違ってSchemeではletはlambdaの派生式だから当然と言えば当然ですね

とか何の関係ないし。初期化しないとUnspecific値が得られると思ったんでしょ。

777 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 09:12:24 ]
>>774
この人かな
www.geocities.jp/hajiri_koichiro/index.html



778 名前:748 mailto:sage [2007/12/21(金) 09:57:25 ]
いやだから
期待したのは(let ((x)) x) => #<unspecific>
結果は(let ((x)) x) -> ERROR
そもそも私の使ってる実装にERROR値はないんです

ダミーの引数を受け取る名前付きletを書いてて
初期値を最初'()にしてたんですけど
'()よりも#<unspecific>のほうがいいかなと思って
深く考えずに実引数を省略してみたんです
その時はletがlambdaの派生式だってことを忘れてて
じゃあletがlambdaのマクロじゃないCLがどうなのかなと思って調べただけなんです

779 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 15:25:21 ]
Makefileの文法が気に入らないので、
S式で書けるイカスmakeの代替プログラムがないかと思ってるんですが、
みなさんごぞんじないですか?

780 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 17:00:41 ]
>>778
> そもそも私の使ってる実装にERROR値はないんです

仕様的に、エラーは値じゃなくて、
エラー状態にあることが、「通知(signaled)される」か、
通知が明記されてない場合は、推奨されないが無視していいんですよ。

エラーが無視された時に式の値が未規定(unspecified)である実装はありうるけど、
それは「エラー値」じゃないし、#<unspecific>とも限らないのです。
なんらかのオブジェクトである必要はあります。

通知される場合には、値を返さず、
トップレベルに復帰する実装が多いと思います。

781 名前:748 mailto:sage [2007/12/21(金) 18:05:36 ]
内容のある話じゃないのにドツボにはまっていく…

>>780
771さんが
>>(let ((x)) x) -> ERROR
>これはletの返り値じゃなくて、文法エラーだぜ。
と仰ったので
返り値じゃないことは分かっています、だから=>と->で書き分けました
と773で書いたのです

>>776
CLはたしかletがlambdaの糖衣構文じゃないから
((lambda (x) x))がエラーになる処理系でも
(let ((x)) x)がエラーになるとは限らない
他方、R5RSはletがlambdaの派生式だから
((lambda (x) x))がエラーになる場合は
(let ((x)) x)も当然エラーになる
と書きたかったのです

ところでR5RSの3.2においてport?という述語がありますが
port?という述語は標準手続きにありませんよね?
あと、promiseは典型的にはthunkで実現されてますけど
R5RSでは「一つの可能な実装」とされているにすぎませんので
標準手続きにおいてpromiseかどうかを判定する手段はありませんよね?

782 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:42:02 ]
>>772
Gaucheで動くと思うけどなぁ?

(define (assoc key alist)
(and alist
(let loop ((ls alist))
(if (equal? key (caar ls))
(car ls)
(loop (cdr ls))))))
;-----------------------------------------------------------------
(define pref-alist
'(("山梨県" . "甲府市")
("神奈川県" . "横浜市")
("愛知県" . "名古屋市")
("茨城県" . "水戸市")))
;-----------------------------------------------------------------
(assoc "山梨県" pref-alist)

783 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 18:53:44 ]
(assoc "山梨" pref-alist)
*** ERROR: pair required, but got ()

784 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:15:03 ]
>>783
ファイルに>>782を書き込んで、そのファイルをeamcsとかMeadowでc-c c-l <<ファイル名>> したあとでやってみるといいYO!


785 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:16:29 ]
>>783
山梨じゃなくて「山梨県」だYO!

786 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:17:29 ]
gosh> (assoc "山梨県" pref-alist)
("山梨県" . "甲府市")
gosh>

787 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:25:50 ]
783さんはマッチしないキーがある場合の判定が抜けていることを指摘しているのでは?



788 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:28:45 ]
ところで最初の(and alistは何のため?

789 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 19:30:07 ]
日本語がおかしかった
与えられたキーがマッチしなかった場合

790 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 21:15:06 ]
>>787-789
漏れもandだけではnull?の代わりにならないような希ガス

791 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:36:44 ]
再帰の方がきれいに書けちゃうんだな

792 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 00:39:53 ]
>>779 Lisp で良ければ defsystem とか asdf とか?Scheme にも多分似たようなものがありそう。

793 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 01:33:19 ]
>>763

(define (assoc key alist)
(and (pair? alist)
(let loop ((ls alist))
(if (equal? key (caar ls))
(car ls)
(loop (cdr ls))))))


794 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 01:38:15 ]
>>793
>>788

795 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 02:28:53 ]
>>794

andはリストを左から右へ評価して行って、偽が見つかると#fを返すから。

(cond ((null? alist) #f)
    ...)

と書くよりは短く書ける。
(pair? alist)が偽だったら即座に#fを返しそこで終了する。

796 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 03:00:08 ]
>>793で(pair? alist)が評価されるのは最初の1回だけでしょ?
alistのcdrをとっていってcdr部が空リストになった場合=keyがなかった場合の判定が欠けてる
gosh> (assoc "山梨" pref-alist)
*** ERROR: pair required, but got ()


797 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 04:14:14 ]
>> 781
なるほど
きみの言わんとする意味がだいたい見当がつきました
きみはこう言いたいのでしょう

Unspecific値はどこだ!



798 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 04:24:14 ]
;andを使った場合

(define (assoc key alist)
 (let loop ((ls alist))
  (and (pair? ls)
     (if (equal? key (caar ls))
       (car ls)
       (loop (cdr ls))))))

;andを使わない場合

(define (assoc key alist)
 (let loop ((ls alist))
  (cond ((null? ls)
       #f)
      ((equal? key (caar ls))
       (car ls))
      (else
       (loop (cdr ls))))))

799 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 08:52:13 ]
>>781
内容ないって事ないんだけどな。

エラー状態とトップレベルの関係、さらにunspecified値の扱いは、
メタ・サーキューラな意味において、schemeが昔から弱かった部分。
MLなんかはもっとカッチリしてる。
SchemeはR6RSで少し前進したけれど、
やっぱりR?RS的な非形式的な意味論なんだな。


800 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 12:52:47 ]
>>797
Unspecific 値なんて存在しない!

801 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 13:23:04 ]
Lifting して Unspecific 値を、メタに扱える言語ってあったよな。

802 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 14:23:23 ]
>>765>>798で4つのassocが登場。
どれが一番早いんだろう?
教えて!判定方法を知ってるエロい人。

803 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 14:32:16 ]
>>802
実測基本

804 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:15:18 ]
>>802-803
メモリ使用量の少ないのはどれかも考えると面白いね。

805 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:17:31 ]
>>803
ストップウォッチでは差が出ません。
どうやればいいでしょうか?
例えばGaucheではどうやるんでしょう?

806 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:24:28 ]
差が出ないなら、差が出る程度まで繰り返せばいいじゃないの。

807 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:40:00 ]
Gaucheにはtimeがあるみたい




808 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:54:23 ]
プロファイラ的なものって何がある?

809 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:07:24 ]
gosh> (time (assoc "山梨県" pref-alist))
;(time (assoc "山梨県" pref-alist))
; real 0.000
; user 0.000
; sys 0.000
("山梨県" . "甲府市")
gosh>

810 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:38:00 ]
シーケンシャルに検索してんのに
1番目のデータを計ってどーすんのw

811 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:40:45 ]
gosh> (time (assoc "茨城県" pref-alist))
;(time (assoc "茨城県" pref-alist))
; real 0.000
; user 0.000
; sys 0.000
("茨城県" . "水戸市")
gosh>

812 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:41:59 ]
O(n)なんだからnの数を増やしてみなきゃ

813 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:12:16 ]
1億個くらいは入れなきゃですよ

814 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 19:02:44 ]
あれ?Kahua FreeBSDで動くようになった?

815 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 20:04:51 ]
>>814
かなり前からなってるぞ。

816 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 18:53:25 ]
;(define (assoc key alist)
;  (and (pair? alist)
;       (pair? (car alist))
;       (or (and (equal? key (caar alist))
;           (cdar alist))
;           (assoc key (cdr alist))))

817 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 18:56:45 ]
インデント思いっきり間違えたorz
しかもずれてるしorz
(cdar alist)は(equal?と同格ね



818 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 02:11:31 ]
さらにどこか間違ってると思ったら
(cdar alist)じゃなくて(car alist)だったorz
cdarだったら連想リストじゃなくてデータだけを返す上に
データが#fだった場合に次に進んでしまう

819 名前:デフォルトの名無しさん [2007/12/25(火) 16:59:43 ]
キタ━━━━\(^λ^)/━━━━!!

プログラミングGauche
・著者:川合史朗 監修
Kahuaプロジェクト 著
・定価:3360円(本体3200円+税)
・B5変 464頁
・ISBN 978-4-87311-348-7
・発売日:2008/02
ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=978-4-87311-348-7


820 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 21:01:42 ]
2月かあ

821 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 23:22:54 ]
Kahuaプロジェクトのメンバーがもしここを見てたら期待してるので頑張ってくださいね。
バグ取りと校正もしっかりお願いしますねw
必ず買いますYO!

822 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 23:34:01 ]
その前に読んどきたい本があるからちょうどいいや

823 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 02:40:05 ]
>>819
あれ? 延びたの?
オライリーからのメールだと一月予定だったんだが。


824 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:44:18 ]
609で書いたzaurus-OpenBSDでGambit-Cのリーダがいかれてる理由が分かりました
エンディアンネスの誤認でした
最初に疑ったのがエンディアンネスの問題でしたが
リーダ以外に変な挙動をしなかったので見逃してました

OpenBSD4.2になってBoehm-GCの7.x系統が動くようになったので
Gaucheも7.x系統に移行した暁には動くようになりそうです
現在もgcディレクトリをいじったら
そこそこ動く実行ファイルはできるのですが
特定の場合にassertで落ちるので常用はできなそうです

あとLinuxの場合は特に問題にならないのですが
BSD系でscheme48から外部モジュールを読み込む場合
実行ファイルであるscheme48vmが-−export-dynamicでリンクされていないと
s48_で始まる関数が外部モジュールから利用できないようです
(Linuxは--export-dynamicがデフォルト?)

Gambit-Cもscheme48も(zaurus-OpenBSDも)
利用者があまりいないので有用な情報でもありませんが
一応報告しときます

825 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:31:26 ]
GaucheはさっさとWindowsに完全対応しろよ。何やってんだ。

826 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:54:40 ]
Windows(笑)

827 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 05:08:21 ]
Windows使ってねーから個人的にはどうでもいいけど。
必要ならScheme Artsに仕事として依頼するのがはやくて確実じゃないか。




828 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 07:30:30 ]
Gaucheは早く1.0出して欲しいなー


829 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 08:59:40 ]
バージョン番号なんてどうでも良くない?

830 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 13:01:03 ]
頭の尖った上司が気にするんですよお

831 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 15:57:04 ]
「まだ0.*だからうるさく言うなよ」

832 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 19:34:48 ]
非R6RSのschemeでファイルをランダムアクセスで読み込む場合は
処理系依存のfile-position相当の関数を呼ぶのと
遅延評価の無限ストリームを作るのと
どっちが一般的ですか?

R6RSになればset-port-position!が使えるみたいですけど

833 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 19:39:17 ]
R6RSより、.NETに対応してほしい。

834 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:14:34 ]
現在R6RSをサポートしてる処理系ってLarcenyだけですか?
大御所どころも軒並みR6RSを実装する予定もないみたいですし
どうなっちゃうんでしょうね

835 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 22:57:26 ]
みんなこっそりやってるんですよ

836 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 01:48:42 ]
www.cs.indiana.edu/~aghuloum/ikarus/
は、いまR6RSに9割準拠らしい。

837 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:42:16 ]
ちゅーかみんな対応する気無いなら、策定すんなって感じだな。



838 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 13:44:48 ]
向かい側ではC99とかね

839 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:32:51 ]
>>837
R6RSの投票のとき処理系の作成者のほとんどが反対だったのに、数の暴力で押し切られたって事実を知ってる?

840 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:10:27 ]
嫌なら処理系の作成者で別の標準を作ればよいのでは?

841 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:12:35 ]
いまさら変な標準なんか作らなくていいから、.net frameworkに対応しろよ。

842 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:35:01 ]
>>839
反対した人はどんな人が居るの?
shiro さんは反対に投票した様に記憶しているけど

843 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:05:09 ]
>>840
「嫌なら対応しなけりゃいい」だろ。
で、実際にみんなそうやってる。めでたしめでたしだ。

844 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:15:07 ]
>>842 調べてみた。

票:投票内容(○:賛成、×:反対、−:未投票)
実:R6RSを実装するかどうか(Marc Feeleyのアンケート)

                   票 実
Manuel Serrento (Bigloo)    − ×
Kent Dybvig (Chez Scheme)  ○ ○
Felix WinkelMann (Chiken)    × ×
Marc Feeley (Gambit)      × ×
Shiro Kawai (Gauche)      × ×
Ludovic Courtes (Guile)     − ×
Tim Hickey (JScheme)      − ×
Per Bothner (Kawa)       × ×
Will Clinger (Larceny)       × ○
Tom Lord (Pika Scheme)    ○ ×
Matthew Flatt (PLT Scheme)  ○ ○
Mike Sperber (Scheme 48)   ○ ○
Aubrey Jaffer (SCM)      × ×
Scott Miller (SISC)        − ×
Jeffrey Mark Siskind (Stalin)  × ×
Erick Gallesio (STklos)      − ×


845 名前:844 mailto:sage [2007/12/31(月) 01:21:15 ]
ミスった。
Kawaの人、反対票じゃなくて未投票

846 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:26:24 ]
>>844-845
大感謝!
一応 Gauche は R6RS も気にしつつ行くみたいですね

lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2007-July/001744.html






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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