- 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
- 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 ]
- いわゆるメソッドと違って、総称関数は特定のクラスの所有物じゃないからねえ。
とりあえず、その辺を管理する(指定する)仕掛けがいるわなあ。
|

|