1 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:16:33 ] ※ ここはCommon Lisp、SchemeをはじめとするLisp族全般のスレです ※ Part24: ttp://pc11.2ch.net/test/read.cgi/tech/1224939205/ Part23: ttp://pc11.2ch.net/test/read.cgi/tech/1215875388/ Part22: ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/ Part21: ttp://pc11.2ch.net/test/read.cgi/tech/1207300697/ Part20: ttp://pc11.2ch.net/test/read.cgi/tech/1205021786/ Part19: ttp://pc11.2ch.net/test/read.cgi/tech/1200237296/ Part18: ttp://pc11.2ch.net/test/read.cgi/tech/1186922295/ Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/ Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/ Part15: ttp://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/ Part09: ttp://pc2.2ch.net/test/read.cgi/tech/1069594582/ Part08: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html Part07: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html Part06: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html Part05: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html Part04: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html Part03: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html Part02: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html Part01: ttp://piza2.2ch.net/tech/kako/987/987169286.html
152 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:03:12 ] それからR5RSのmapは返り値の順序は規定されているけど 評価順序は未規定 だから (map display '(A B C)) => '(#<undef> #<undef #<undef>) 標準出力にはABC、ACB、BAC、BCA、CAB、CBAのいずれか 評価順序をリストの順通りにしたいのならfor-eachを使う (for-each display '(A B C)) => #<undef> 標準出力には必ずABC 評価順序と戻り値のデータ構造内の順序の区別は HaskelのIOモナドにもつながる (たぶん) R5RSでは関数の引数の評価順さえ未規定
153 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 23:52:11 ] >>152 >>それからR5RSのmapは返り値の順序は規定されているけど >>評価順序は未規定 うわ…これ今ごろ知ったよ、ありがとう。つかこの仕様で誰が得するんだろ。 慌てて調べたけど、Gauche は独自仕様で常にリスト内の順番どおり、なのね。 ちょっと安心。
154 名前:デフォルトの名無しさん [2009/02/04(水) 00:06:16 ] 並列処理が楽になるとは聞いたな。
155 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 12:25:14 ] 少しActorも意識してるんだろうね。 各要素に並行にfがメッセージパッシングされて。 >>138 funarg問題の時代までタイムスリップかよ。
156 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:04:44 ] funarg問題の例: compose (lambda (f g) '(lambda (x) (f (g x)))) こうすればいいんじゃないの? (lambda (f g) `(lambda (x) (,f (,g x))))
157 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:50:12 ] quoteが嫌いな人はクロージャやsyntax-rulesを使う quoteが大嫌いな人はPythonやRubyを使う そんな気がする
158 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:05:31 ] quasi-quoteの便利さは異常。 そんな嫌いになるなんて、これが本当のくぉーつ嫌いってやつか・・・
159 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:51:16 ] 昔のマクロにはバッククォートなんてなかったよな ひたすらlistでS式をこさえてたっけw
160 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:32:58 ] どんだけ昔の人だよ
161 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:40:10 ] Lisp-85とかって言っても分からんだろうなw
162 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 03:53:31 ] そんな最近かよ とっくにバッククオートあるよw
163 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 04:06:48 ] Lisp-85ってS-OSというZ-80のOS上で動く奴なんだが fexpr形式やmacro形式はあってもバッククォートは無かったぞ
164 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 08:52:25 ] Alan Bawden, "Quasiquotation in Lisp"によれば、 現在とは少し記号法が違うが、1972年のConniverが現代的な quasi-quoteの起源。 少なくとも1977年ごろのLisp machineには、現在使われているのと ほぼ同じquasi-quoteがあった。 ということらしい。 D. V. McDermott and G. J. Sussman, "The Conniver reference manual," 1972 ftp://publications.ai.mit.edu/ai-publications/0-499/AIM-259a.ps Alan Bawden, "Quasiquotation in Lisp," 1999 citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.5.2566
165 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 10:11:52 ] 'の逆はevalだと思ってた
166 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 10:29:33 ] >>163 Z80には荷が重かったのでは メモリどんだけ積んでたとか知らないけど 展開後は再帰関数のかたまりだし
167 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 10:39:22 ] 全然問題ない。
168 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 10:57:09 ] あっそ ならLisp-85作った人が入れ忘れたんだね
169 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:05:52 ] quasi-quoteを効率を保ってきちんと実装するのは意外と難しい。 80年代になってもマクロと組み合わせた時の実装手法の論文があった。 アンチquasi-quote派というのが昔はいた。Common Lispで決着。
170 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:51:35 ] Gauche WiLiLiのあんまり目立たないとこに自分の作ったパッケージ書き足す方法はないものだろうか
171 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 16:28:07 ] >>156 その関数の引数f,gにシンボルxを引数として渡すと死ねる。
172 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:05:14 ] やっぱり gensym が必要なんだね。
173 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 18:47:23 ] 関数名じゃなく、関数「値」を式に埋め込めばいい。 gosh> (define x (list + 1 2)) x gosh> (define y (list '+ 1 2)) y gosh> (define + -) + gosh> (+ 1 2) -1 gosh> (eval x (current-module)) 3 gosh> (eval y (current-module)) -1
174 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 20:23:37 ] 再帰関数だったら?
175 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:49:55 ] そこまで行くとR5RSでも解決できてるかどうか怪しい R6RSは再定義禁止だっけ
176 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 21:59:07 ] R5RSの件は (define f (letrec ((f ...)) f)) と書けば安全かも
177 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 08:10:38 ] 仕様に自由があるから面白い。
178 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:01:07 ] >>173 で'の使い方わかった気がするけど 本格的に勉強するならどの本がいいのでしょうか?
179 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 17:53:52 ] >>178 SICPがいいよ マクロの話題は一切ないけど、マクロは遊ぶものであって勉強するものではない それでもSICPがSchemeを使ってる理由を考えながら読めばおもしろいかもね
180 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 18:39:03 ] 俺はOnLispをお勧めする。
181 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 19:54:30 ] ふつうにあのお魚の本でよくないか?
182 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:48:41 ] 処理系のソースで十分
183 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:37:03 ] ttp://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/ ほれ
184 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:02:05 ] うわーっ!びっくりした と避ける
185 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 08:31:34 ] >>169 ふむふむ、勉強になります。 そういえば関係あるかわからないけど、 scheme じゃなくて elisp も、 Emacs19 のころは `(foo ,bar) とはかけなくて、 (` (foo (, bar))) と書いていたような。
186 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 13:41:36 ] 関係ないけどチャイティンのLispでは'はシンボルで (QUOTE X) == (' X) って書いてたな
187 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 14:53:09 ] (define (% num1 num2) (remainder num1 num2)) としてるんですが、関数に別名与えるもっと良い方法はありますか?
188 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 15:21:52 ] 引数の数が一致しているのなら (define % remainder)
189 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 17:06:46 ] それでいいんですね。 気づきませんでした。 ありがとうございます。
190 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 19:07:14 ] 指定のクロージャが束縛されているシンボルを探す方法ってありますか?
191 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:08:34 ] 処理系によってはあるかもしれないけどRnRSにはないんじゃないかなぁ。 CLにはあるかもしれませんけどSchemerだから知らないです。 シンボルのリストを引数に与えるのであれば グローバル束縛されているクロージャをevalで取り出してeq?して調べられるけど グローバル変数のリストはどうやって得ればいいかわかりません。 それにローカル束縛も含めるとなると不可能じゃないでしょうか。
192 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 20:28:40 ] CL なら do-symbols で探せるんじゃないかと。
193 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:01:31 ] Haskellとlispの得意不得意ってどんなところなのでしょうか?
194 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:44:15 ] 別に無いよ?
195 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:53:19 ] >>193 特にないんじゃないの? 文字列を扱うとめちゃくちゃメモリ食うってのがHaskellの弱点かもしれんけど 今時のマシンだったら何の問題も無いし。
196 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 22:56:48 ] Haskellとlispを戦わせたくてしょうがないらしい
197 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:04:03 ] ムシキングか何かでやってください
198 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:39:04 ] [Lisp] 攻撃:85 素早さ:94 防御:96 命中:68 運:32 HP:154 [Haskell] 攻撃:68 素早さ:55 防御:65 命中:52 運:31 HP:233 Lisp vs Haskell 戦闘開始!! [Lisp]の攻撃 HIT [Haskell]は91のダメージを受けた。 [Haskell]の攻撃 HIT [Lisp]は11のダメージを受けた。 [Lisp]の攻撃 HIT [Haskell]は109のダメージを受けた。 [Haskell]の攻撃 HIT [Lisp]は0のダメージを受けた。 [Lisp]の攻撃 HIT [Haskell]は76のダメージを受けた。 [Lisp]が[Haskell]を倒しました(ラウンド数:3)。 魔法のMD5 - MD5バトル www.newspace21.com/mix/btl.php
199 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:41:50 ] いちいち貼らなくていいよ
200 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:49:28 ] >>193 Haskellは近くのコンビニにぬり絵が売ってます。 Lispはドンキホーテに行けばぬいぐるみが売っています。 >>193 君はどちらが好きですか?
201 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:02:40 ] 外に出なくても済む方がいいです
202 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 07:17:52 ] λ
203 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 08:13:10 ] maximaの中に面白いのみっけた (defun for-eval-then-quote (var) `(list 'quote ,var)) (setq x 1) (for-eval-then-quote x) -> '1
204 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 12:37:31 ] >>203 えーと、ほんとにそれを動かしたら'1になったのかい? 正しい結果は(list 'quote 1)になるのでは。 関数とマクロの評価はごっちゃにしないように。 この辺り何か思い違いしてると思うよ。 ちなみに'1を期待するなら関数の中身は`',var または(list 'quote var)
205 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 13:23:49 ] >>204 間違えました (eval (for-eval-then-quote x)) ->'1
206 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 01:08:08 ] loopマクロ勉強したのにiterateの方が使われてたり 言語の発展はゆるやかだ とか言ってたのどこのどいつだ
207 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 01:52:43 ] >>206 それ言語じゃなくてライブラリの発展だと思うんだが……。
208 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 02:14:28 ] >>206 これ読め。 pc11.2ch.net/test/read.cgi/tech/1203096230/251
209 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 12:06:52 ] [clojure] 攻撃:28 素早さ:67 防御:78 命中:87 運:55 HP:202 [Qi II] 攻撃:51 素早さ:21 防御:48 命中:69 運:23 HP:189 clojure vs Qi II 戦闘開始!! [clojure]の攻撃 HIT [Qi II]は1のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は16のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は56のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は56のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は10のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は38のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は25のダメージを受けた。 [Qi II]の攻撃 HIT [clojure]は1のダメージを受けた。 [clojure]の攻撃 HIT [Qi II]は57のダメージを受けた。 [clojure]が[Qi II]を倒しました(ラウンド数:6)。 魔法のMD5 - MD5バトル www.newspace21.com/mix/btl.php
210 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 13:48:31 ] kill
211 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 15:30:33 ] 連邦のモビルスーツは化け物か!?
212 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 05:14:36 ] array->list 変換関数がみつからない 自分で書くものなの? (array->list #2a((1 2)(3 4))) ->((1 2)(3 4))
213 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 23:55:21 ] >>自分で書くものなの? R5RSには記述がないからそうだと思うけど, それより#2a(...の2aって何?
214 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 00:02:23 ] #2A(..)ってのはCommon Lispの二次元配列かな。 ARRAY (2)のリストになってほしいのか、リストのリストになってほしいのか。 まぁ、結論からいうと>>212 ARRAY (2 2)はLISTと互換性がないからムリ。自分で書く。 ベクタとかなら (coerce #(1 2 3) 'list) で変換できる。
215 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 03:21:33 ] lispに興味があるんですが、 いまからlispを勉強するならなんの書籍がお勧めですか? SICPってのがお勧めっぽいんですが、MITで使われてるとなると・・・ 読みこなせるかなー
216 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 05:29:30 ] オンラインで読める無料の ・独習Scheme三週間 ttp://www.sampou.org/scheme/t-y-scheme/ ・入門Scheme ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html や 書籍じゃないけど ・もうひとつのScheme ttp://www.shido.info/lisp/idx_scm.html あたりを読んでから買えばいいんじゃないでしょうか。
217 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 05:46:35 ] >>215 SICP読んでみて、自分に合いそうなら買うのがいいとおも。 mitpress.mit.edu/sicp/
218 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 10:05:25 ] SICP日本語版はちょっと高い
219 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 10:48:56 ] なんでいきなりSICPなんじゃーー
220 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 11:11:47 ] 「良い本だ」ってよくScheme関連のWEBに載ってるから。
221 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 11:20:35 ] 良い本には違いないけど、 SICPも買いたいなら、別の本と併読した方がいいと思う。 言語仕様書が日本語化されているからそれでいいか、 って人ならSICPだけで問題なし。
222 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 12:06:25 ] maximaが使いたいだけだったので on lispはじっくり読んだが SICPは問題もやらずに流し読み
223 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:13:48 ] SICP は Scheme の本というわけではない。 Scheme を使って解説してる本。
224 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:19:01 ] >>223 え、そうなんですか? 自分はアルゴリズムの勉強のために買いました。 序盤の関数 f(x) の話とか、大学の数学が懐かしいです。
225 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:22:09 ] SICPにアルゴリズムの話が出てないわけではないが、 SICPをやってもアルゴリズムを勉強したとは言えない。
226 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:22:39 ] >>223 何を解説してるの? w
227 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:28:22 ] >>226 っ人生
228 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:36:31 ] >>226 本のタイトル
229 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 20:44:04 ] >>226 降り続く雨 きしむ廊下 立ち止まる足音 遠のく意識
230 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:35:07 ] SICP読んだら魔法使いになれますか?
231 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 07:26:27 ] >>230 なれません。
232 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 07:45:20 ] >>230 なれます。 就活に有利です。
233 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 11:01:41 ] >>230 さあ、30歳になるまで貞操を守る作業に戻るんだ
234 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:39:58 ] 30歳を越えてるのですがSICPは読めますか?
235 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 14:51:53 ] 読めなかったら困ると思いますよ
236 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 15:01:35 ] 60歳とかでも読めるらしいですよ 読めなかったら数学勉強してから再挑戦しましょう
237 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:19:40 ] 30歳過ぎてもSICP読むと童貞になりますか?
238 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:34:56 ] 俺はSICPを読んで、背が10cm伸びたよ
239 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:49:08 ] SICP読んで宝くじ当たったよ。
240 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:50:51 ] もしかして訳者の和田さんってスーフリの和田さん?
241 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:52:39 ] プログラマ50人に1人ぐらいはSICP読んでるよね。
242 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 19:54:25 ] >>250 和田って俺のことだけど。
243 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 20:28:13 ] SICP未読で許されるのは小学生までだよね!
244 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:31:02 ] ちょっと待ってくれ。「人生に必要な知恵はぜんぶ幼稚園の砂場で学んだ」とあるように、幼稚園のうちに読んでおくべきものではないだろうか?
245 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:34:17 ] なんてこったい/(^o^)\
246 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:52:02 ] 人生に必要な知恵はぜんぶサンドボックで学んだ。
247 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 22:55:25 ] 俺、人生に必要な知恵はぜんぶ死後の世界で学ぶんだ…
248 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:02:42 ] 次はアメンボに生まれてきたりして
249 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:07:08 ] おれも人生に必要なことは幼稚園で一通り学んだ覚えがあるな
250 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:14:11 ] >>249 ってことは、幼稚園で、チュー済ませたタイプか。
251 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 23:45:23 ] 登り棒オナニーなら幼稚園の時に覚えました
252 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:48:59 ] SICP以外誇れるものはないのか