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

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のままだし。






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

前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