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
451 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:33:43 ] そこまで判ってて、なぜ「わけわからない」になるのか、わけわからないw
452 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 03:56:00 ] >>450 理解したみたいなので、詳しくは書かないけど、 言語自体というか、処理系が内部で使う文字コードのこと。 Gaucheの場合、EUC-JPやUTF-8、ShiftJISなどから選べる。 それで、お前さんの使ってるGaucheはUTF-8でコンパイルされてる。 確かに、Windowsのコマンドプロンプトから使うには不便だろうな。 configureに--enable-multibyte=sjisを指定してコンパイルし直すか、 Emacs経由で使った方がいいと思うぞ。 ttp://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox
453 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:43:32 ] >>452 UTF-8でビルドした犯人は俺だ。 でもShift_JISでビルドしたものを配布すると他国の人が困るんじゃないかな。 それともGauche-mingw-0.8.13-sjis.exe とかを作る?
454 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:44:57 ] >>451 毒を出しすぎ。
455 名前:UTF‐8はXML標準…でも日本語「だけ」苦手?(ТΤ mailto:sage [2008/06/11(水) 10:18:00 ] LISPをざっとみた感想です; 「直感的には」わかりにくかったけれど、 「印欧語話者の生成文法で言う言語本能って だいたいこんな感じなんじゃないか?」と思った。 (英語で隠れてるが、ドイツ語は剥き出し?) →この「発想パターン」は何度でも「来る」。 私は参照(接続/冠詞)型主語言語話者でなくて 近傍(焦点‐集合操作)型主語言語(日本語)話者w 集合操作による構文は経路‐直線的間接参照端点: 「静的・直線的な論理」:印欧語族の構文法とは違う。 (ドジスンの指摘したとおり論理対象空間は本来動的で、 各所で前提が違う方が普通だから、直線化は不可能。) =英語的言語感覚でなら「直感的に使える優秀な言語」。 英語(印欧語)センスを鍛えようw ゎぁぃ モレオワタ(AA略)
456 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:30:34 ] 個人的には、Lispは「言語」ではないと思ってる。 図形、地図、表、レゴブロック、そういったもの達のほうにずっと近い。 だから>>455 を読んで、日本語の話者だから戸惑うのではなく、 言語に触れるモードで触れるから戸惑うのではないか、みたいなことを感じた。
457 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 11:52:23 ] 黒板に自然法則とか書く時はそれでいい プログラマの意図が分かるように書きたいときは、言語っぽくないと困る
458 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:09:57 ] >>455 日本語もまともに書けないのはよくわかった。
459 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:50:18 ] >>458 自分の読解力のなさを棚にあげるのはやめようぜ
460 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 12:56:30 ] >>455 そんじゃ、印欧語話者の間でPy(ピー)が人気なのは何で?素朴な疑問〜
461 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:03:57 ] というか、国際的にもLisp/Schemeは日本では大人気。
462 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:04:09 ] >>469 ほう、なら455を日本語で説明してくれんか? 3行目から出てくる括弧の使い方から。 特攻の拓みたいに特殊な言語かと思ったよ。
463 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:04:37 ] ごめん459だった。
464 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:14:22 ] 「直感的には」わかりにくかったけれど、 → 直感的には判りにくいけれど、 「印欧語話者の生成文法で言う言語本能ってだいたいこんな感じなんじゃないか?」と思った。 → 印欧語話者の生成文法で言う「言語本能」って、大体こんな感じなんじゃないか?と思った。
465 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:54:50 ] >>453 Windowsのことはよく知らないんだけど、入出力コードはカレントロケールに合わせる みたいなことって難しいの?
466 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:56:52 ] >>459 俺も>>455 が何を言いたいのか理解できなかった。 読解力無いのかなあ。
467 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:05:44 ] >>464 5行目以降もまるで判らんので、その調子で翻訳お願いしますね。>459 こんな物を読解する能力なら不要だと確信してるけど、 >>456 でいきなり会話が成立した(らしい)事が、本当に不思議でしょうがない。
468 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:08:50 ] LISP使いはスノッブが多いな GEBとかメタマジックゲーム読んで悦に入ってそう
469 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:23:47 ] コンプレクッスですか
470 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:24:44 ] >>455 が理解できない一人でーす。 >>461 「国際的にも」「日本では」 国際的なのか、日本だけなのか、はっきりしる! …みたいな日本語の乱れについての話題なのかな?今は。 外国人が一生懸命コミュニケーションしようとする試み なのかもしれないけど、漢字ひらがな並べれば良い、って物じゃないんです。 半端に学ばれたままだと相手を不愉快にさせますよ。
471 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:32:23 ] 2ちゃんの定型文だけはしっかり使うガイジンかよw 字は読めないけど日本のマンガには詳しい、みたいな。
472 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:43:03 ] いまのとこ一方的に文章吐き出す機能しかないみたいだから 受け答えは期待出来ないと思う
473 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:34:47 ] >>465 このへんに問題点が書かれている。 practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aWindows%2fVC%2b%2b%3alog%3aold_2007#H-1ctgw0n これはVC++の話だけどMinGWも同様と思われる。
474 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:37:14 ] >>462 俺も理解できないんだが、 >>456 が回答してるんだから 理解できる文章なんだろ。 俺たちが読解力不足ってだけで。 と思っただけ。
475 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:40:11 ] 文章を理解したのではなく、その他の能力(ESPなど)を用いたのではないかと思う
476 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:06:49 ] 文章はともかく言葉の意味がわからない 言語学用語なのかな? あるいはLispを齧ったばかりの455さんが戯れに組んだELIZAじゃないだろうなw
477 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:08:45 ] 455、人気者だなw
478 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:19:09 ] >>450 MS-Windows使わない人なんでハズしている可能性あるが… この端末エミュレータで解決できんかね? 実行するコマンドの文字コード指定できるみたいだが。 ja.poderosa.org/ Win32のコンソールAPIは最低限の依存で済ませているみたい。 Gaucheもそうだろうから、利用できるんじゃないか。
479 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:02:49 ] Lispは素晴らしい言語だと思うのですが Lispが生き残ってるのはEmacsのおかげ 実用には耐えないが一部ハッカーの趣味で使われている など否定的な意見のみが見られてイマイチ本気になれません Lispで作られたアプリケーションを教えていただけないでしょうか
480 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:05:39 ] マルチかよ
481 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:08:28 ] これは酷い
482 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:29:13 ] >>455-479 の人気に嫉妬
483 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:30:39 ] 【入門】Common Lisp その4【質問よろず】 pc11.2ch.net/test/read.cgi/tech/1201402366/860 860 名前:入ってしまえば天国なんだね…。[sage] 投稿日:2008/06/11(水) 11:01:38 LISPに最初から挫折しそうになって、あちこち見ています。 使用者例が少なすぎて発想パターンを断言できないけど、 思考‐発想タイミングから言えば基本的に敷居「だけ」が 高い言語のようだし、初心者を甘やかしても良さそう。 ところで、この言語で言えば印欧語族のロシア語みたいな 性格を見て今、ぐぐってみたんだが…ちょw大当たりww これは…すごいのはキャラが立ってるLISPだなwww これが、印欧語族の中では英語的なC言語系だと… ぐぐってみた…ごめん、もう何も言う事ないwwww (英語は「敬語」を始め、高度習得が困難です。) 対照的すぐる…(もうちょいがんばれば、あるいは…?
484 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:30:42 ] >>479 無理して本気になる必要ないよ。 好きなことだけ本気でやればいい。 仕事なら話は別だけどね。
485 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:33:54 ] >>474 おいおい、弁解するのはかまわないけど、 勝手に「俺たち」で括るのはやめてくれよ。 お前みたいな言う事がコロコロ変わる幼稚な奴と 一緒にされたら気分悪いだろ。
486 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:36:15 ] ブログペットやマルチにいちいちマジレスする必要もないと思うんだ。(´・ω・`)
487 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:04:32 ] >>479 これはひどいww
488 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:41:12 ] >>485 必死すぎw
489 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:57:30 ] >>488 必死だから何だ? マジで気持ち悪いからな。お前も含めて。 書き逃げばっかりしてないで意見があるなら書けよ。
490 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:32:58 ] www.inf.hs-zigr.de/~wagenkn/PP-Buch/ #!C:/Programme/PLT/mzscheme -r (require (lib "cgi.ss" "net")) (display "content-type: text/html") (newline) (newline) (display "<HTML>")(newline) (display "<HEAD><TITLE>cgi-script's response</TITLE></HEAD>")(newline) (display "<BODY>")(newline) (display "Hello, I'm Mr. ") (display (extract-binding/single 'surname (get-bindings))) (display ". <BR>")(newline) (display "Just call me ")(display (extract-binding/single "firstname" (get-bindings))) (display ". <BR>")(newline) (display "</BODY>")(newline) (display "</HTML>")(newline)
491 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:55:25 ] (define λlambda)
492 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:51:48 ] lambdaは構文だからdefine-syntaxやdefine-macroにしたほうがポータブル
493 名前:デフォルトの名無しさん [2008/06/12(木) 01:55:43 ] scheme初心者なんだけどほんとに再帰って難しい 入門書読んでて再帰の便利さはなんとなく伝わったけど・・・ やっぱ上級者になると普通に使えるんですよね 俺ってやっぱりダメな子・・・ | |/(-_-)\| | | ∩ ∩ | |  ̄ ̄ ̄ ̄ ̄ :::, ―――、 ::::/./^^^^^^'vl :::::::| | / \ || :::::::(sl rェ , rェ |') ウツダ :::::゙ゝ、 - ノ :::::/ l  ̄ ̄lヽ :::::|-|/l⌒l⌒l-| :::::\二、_)二ノ _____________ :::::||| |:| | /`ー(⌒)(⌒) /;;;;;;;;;;;;;;;; ̄;;;;; ̄ / /
494 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:10:18 ] >493 昔むかし、Pascalの授業の宿題で再帰を使わないと事実上解けない問題を 「再帰呼び出しと言うものを全く知らずに」何とか解こうと悪戦苦闘した 俺よりはマシw。
495 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:14:54 ] ちなみにその教科書にはその問題が記述されている箇所以前に 再帰呼び出しを説明している部分がほとんど無かった。 今なら考えられない教科書だと思う。
496 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:19:25 ] 極めて教育的な良い教科書だな
497 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:22:45 ] 一行一行その時の値がいくつになるか紙に書いてみたらわかると思う
498 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:23:14 ] 「再帰」という単語をほとんど使わずに それを記憶に焼き付けさせたのか
499 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:32:13 ] さらにちなみに俺の場合(Pascalでの再帰の場合)は 見かけ上、同じ名前の変数や関数でもシンタックス(戻り番地など)と 共にスタック上に別もの扱いで次々と積まれて行く事が分かって ようやく納得が行ったよ。 そこに気づくまでは訳が分からなかった。
500 名前:デフォルトの名無しさん [2008/06/12(木) 02:33:08 ] ゲームコンテストに出しなさい。 www.tohofuhai.com/ 豆腐ゲームコンテスト kirara111.sakura.ne.jp/ 星屑きらら杯 3punge.com/ 3分ゲーコンテスト(今休止中)
501 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:55:49 ] >>494 昔pascalとくれば東大の学生だったんだな。
502 名前:デフォルトの名無しさん [2008/06/12(木) 03:30:00 ] Eclipse3.3+Cups使っている人いる? なんか環境自体が、うまく動いていないような気がするのだが・・・
503 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 03:48:30 ] 再起で解け、ループで解けない問題はない。
504 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 04:16:06 ] それは「問題」という言葉の意味を取り違えてるのでは。 >>494 の思い出話に出てくる「問題」は、あくまで宿題なわけで。 たとえば身も蓋も無い例をいえば、「ただし、ループを使ってはいけない」と書かれた「問題」は、 再帰で解けてもループでは解けないよ。
505 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 08:09:22 ] >>494 >>499 Pascalの機能として知らなかったのなら話はわかるが、 再帰の概念がわからなかったっていうのは・・・ 高校の数学をさぼってたと考えられる。
506 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:30:12 ] 再帰じゃないと解けない問題なんてあるのか? 「再帰を使用せよ」と指定されてないかぎり、なんでもif/gotoで書き直せる はずなんだが。
507 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:49:54 ] 例:「再帰を使用せよ」って指定された問題
508 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:59:14 ] Schemeの末尾再帰はむしろgotoに近い機能ですよ Schemerはgotoを嫌っているわけではないと思います
509 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 10:26:12 ] ackermann関数を再帰なしで
510 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 10:31:17 ] 現在の有限の記憶域の計算機で計算できるものは再帰なしで計算できる。 配列をスタックと看做してループすれば再帰と等価。 たぶん。 無限の記憶域の場合は等価かどうかはわからない。
511 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 10:44:03 ] gogo ackermann!!
512 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:21:09 ] >>510 >配列をスタックと看做してループすれば再帰と等価 それじゃ関数の呼び出し部分を自分で作ってるのと同じじゃないか?
513 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:35:21 ] >>510 たらい回し関数ってループに展開可能かい?
514 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:01:04 ] >>512 そう。 端的に言えば再帰を使わずに仮想機械を組む。 その中で仮想言語で再帰的プログラムを組む。 表層言語には再帰は現れず、 データ(仮想言語)に再帰が現れるだけ。 CPUは再帰的ではなく反復的に計算するけど 再帰計算ができるでしょ? それをソフトウェアでするだけのこと。 再帰的なデータも許さないとなれば 再帰的アルゴリズムが表現できず チューリング完全でなくなる。
515 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:01:43 ] Ackもtaraiも可能です。 >>510 無限記憶領域でも等価です。 詳しくは計算理論の入門書で。
516 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:17:31 ] >>493 上級者になると、ていうより基礎中の基礎。 ドラゴンボールで言えば舞空術。 囲碁で言えばシチョウ。 でもあのポール・グレアムでさえ プログラムを習いたての頃は反復アルゴリズムしか知らず 再帰を使いたいなどと考えたことはなかったし (Ansi Common Lisp) 19歳の時には 「たぶんLispを学ぶべきなんだろう。しかしLispはあまりに異質に見える。」 (Lispがそんなにすごいなら ---If Lisp Is So Great---) などと考えてたんだから 頑張れ!
517 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:17:52 ] >>503 あたりまえじゃないか。もちろん逆も真。
518 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:30:10 ] 有名な再帰画像 Drosteココア en.wikipedia.org/wiki/Image:Droste.jpg メリーミルク mognavi.jp/image/food/00/01/51/4902705021471.jpg
519 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:34:59 ] >>493 の書き込みを見て、ふと思った。 再帰を見て、わざわざこんなことしなくても・・・と思ってしまう問題が多い。 たまに再帰があって良かったなと思う程度。 僕は、きっとLispに向いてない。 ちなみに、ほとんどLispはできません。
520 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:51:53 ] >>519 だが、連投すまん。 この質問に的確に答えてくれる人がいたら、 みんなの(僕の)ためになるんじゃないかと思って。 たとえば、再帰を使うめっちゃ初歩的な関数lengthがあるよね (defun length (lst) (if (null lst) 0 (+ 1 (length (cdr lst))))) 再帰がわからない人って、読むときにlengthって関数の 意味が知りたいのに(わかってないのに)、lengthを使われても わかるわけないじゃんってことじゃない?
521 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 13:55:28 ] その辺について、ANSI Common Lispで言ってたね。 以下、それを引用しているページから引用。 初めのうちは再帰は理解するのが難しいと思う人が多い。 難しいと思ってしまうのは、主に関数に対して誤ったメタファ(比喩)をあてはめていることによる。 人々は関数をマシンの一種ととらえがちである。 原料がパラメータで届き、ほかの関数に下請けに出して処理し、最後に完成品を組み立てて、返り値として出荷する。 関数に対してこのメタファをもっていると、再帰は不可能ということになる。 マシンがどうやって作業を自分自身に下請けに出すのか? 動作中のマシンにはそんな余裕などないじゃないかと思ってしまうことになる。 関数は進行しつつあるプロセスであると見る方が、メタファとしては適当であろう。 再帰はプロセスの中では自然なものである。日常生活でも再帰的なプロセスをよく見る。 たとえば、ヨーロッパ史における人口変化に関心をもっている歴史家を考えてみよう。 資料を調べるプロセスは以下のようなものだろう。 1. 1 つの資料を手に入れる 2. 人口変化に関する情報を探す 3. その資料がほかの役立ちそうな資料に言及していたら、ほかの資料を調べる このプロセスは理解しやすいものだが、第 3 ステップにより同じプロセスが何度か適用されることがあるので、 再帰的なプロセスになっている。
522 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:00:20 ] >>520 なるほど、そういう風に悩むのか。 まず、lengthの中のlengthが使われるのはnullでないときだけ、 つまり () に対する length の値は length を使わずに 0 と決まっている。 で、それ以外については length を使うわけだが、だんだん短くなっていつかは 0 が返る。 という具合にステップバイステップで考えていくと判りやすいんじゃないかな。
523 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:02:50 ] 文系の奴は頭だけで理解しようとするからイカン グダグダ言ってないで手も動かせ そう言っていた数学の先生がいたとかいないとか The Little Schemerなんかもそのクチか
524 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:05:57 ] でもまぁ実際には、理系にとっても「体感」というのは大事だよな。
525 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:20:38 ] 数学的直観って言葉があるくらいだからね。 自分は数列、漸化式が得意で好きだったから、 再帰は何も悩む所がなかった。 実装手法もPコードですぐに理解できた。(東大ではありません>>501 ) 浮動点による意味づけを知った時には、 漸化式みたいでわくわくした。
526 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:43:07 ] >>521 名文をありがとう。 >>522 う〜ん、自分流に噛み砕くと、 (1)停止することを確認 (2)cdr部分を取って、空リストになるまでは1足し続ける(lengthの場合) ってことですかね。 >>525 うらやましい。
527 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:00:29 ] 部分問題に分けて、(car, cdr) 部分問題毎に適切な処理、(1, length) 部分問題の解を統合。(+) 部分問題の収束地点の設定。(null, 0) 分割統治法の一番極端な形、一要素とそれ以外に分ける。 後は下請け(再帰的関数呼出し)に任せる
528 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:27:08 ] いちいちcarとかcdrみたいな「処理」で取り出させるのが前時代的なんだよなー LISt Processorなのにパターンマッチが標準で無いってどういうことよ
529 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:28:49 ] >>528 簡単に作れるからでは?
530 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:31:19 ] >>529 簡単に作れるものほど言語が準備すべきだと俺は思う。 そうでないと人によってそれぞれの実装ができてしまって 言語の「中に」バベルの塔ができちゃうからね(実際Lispはそうなっちゃってるのでは?)
531 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:35:42 ] パターンマッチこそが言語内言語なんだよね。 汎用のパターンマッチを使うよりも効率的な専用マッチャーが簡単に書けるから、 必要性が低いのだ。正規表現があまり使われないのも、だいたい同じ理由だ。
532 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:40:44 ] 処理系毎の拡張で用意されてるでしょ
533 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:43:07 ] 汎用のPrologインタプリタでさえ、Lispなら100行くらいで書けるからなあ。
534 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:44:27 ] >>528 君の考える「パターンマッチ」の具体的な仕様と使用例を示してくれると、 より有意義な議論ができると思う。
535 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:51:19 ] パターンマッチって分岐と分解を同時に行う処理だと思ってる 大抵は分岐の内容に応じてリストを分解するから一度に処理するのは適切な抽象化なはず 下にリストの内容を1だったら2、2だったら5、それ以外だったらそのままにして変換する関数を 書いてみたがどうみてもパターンマッチ版の方がわかりやすい(どうやってパターンマッチを実装するのかは しらないけど。あとmap使えというのは禁句) みんなのLispプログラムもみなおしてみたらパターンマッチを使った方がスッキリする部分が多くあるのでは? このスレにもパターンマッチを「ふわふわしたおまけ」としかみなしてない人が結構多いと思うから 俺のレスがパターンマッチを使うきっかけになってくれれば幸いだ。 (defun (hoge lst) (cond ((eq (car lst) 1) (cons 2 (hoge (cdr lst)))) ((eq (car lst) 2) (cons 5 (hoge (cdr lst)))) ((and (not (null? lst)) (list? lst)) (cons (car lst) (hoge (cdr lst)))) (else nil))) (defun (hoge lst) (pm lst ((| 1 xr) (cons 2 (hoge xr))) ((| 2 xr) (cons 5 (hoge xr))) ((| x xr) (cons x (hoge xr))) (else nil)))
536 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:59:53 ] >>535 後者が簡潔だが、前者が判りやすい。おそらく効率は前者が勝る。 「ふわふわしたおまけ」とは思わないけど、言語の中に別の言語を導入するような 気持ち悪さは感じる。 まあ好きな人は使えば良いのでは?という程度かなあ。
537 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:20:59 ] >>535 CL?Scheme?
538 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:27:26 ] 俺パターンマッチ入りの俺Lisp言語だろw
539 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:20:34 ] パターンマッチはなじむと便利 可読性とかは知らんけど
540 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:22:11 ] まあ関数型言語だとおなじみ
541 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:25:28 ] 頑張れば CLtL3 に入れてもらえるかもw
542 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 20:28:51 ] 535のプログラムみて思ったんだけど Listだけどnilじゃないのを一発で判別する関数ってないんかね
543 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:05:06 ] consp pair?
544 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:41:28 ] 来月「Practical Common Lisp」の訳書が出るっぽい www.bk1.jp/product/02997001
545 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:47:48 ] >>544 原著よりも安いのか。 園城さんって、LispUser.netの人ですね。
546 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:54:10 ] >>543 「List」だけどnilじゃない
547 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:37:44 ] >>528 いろいろな人が考えたけど、 S式とうまくマッチするのがないってのが現状。 これだけ時間がかかって見つからないからないんだと思う。 define-syntaxは一部カバーしていると思うが。
548 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:57:14 ] CLOSがパターンマッチみたいなものだと思うのですが
549 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:32:04 ] >>547 昔から、 (match '(a b . c) '(1 2 3 4 5)) =>((a 1) (b 2) (c (3 4 5))) (match-let (a b . c) '(1 2 3 4 5) (list a b c)) =>(1 2 (3 4 5)) みたいなのや、prologのunification辺りはほとんどの人間が 自分の物を持ってると思うけどな。 こういうのをマクロにしてパターンを定数で取れば特殊化もできる。 今は組み込みにするのが流行だろうけど、 LISP系ならパターンマッチはライブラリで自然に実装できる範囲だから、 あえて入れなかったのでは。
550 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:39:31 ] >>546 nilは「List」だけど。 おまいのListの定義がおかしいだけ。 素人増えましたな。
551 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:46:00 ] Listだけどnilじゃないのを一発で判別する関数 (define (non-nil-list? x) (and (not (null? x)) (list? x))) が組み込みであるか?てことでしょ。 これはSchemeのコードだけど。 コンスとリストを混同してるのでは?
552 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:55:31 ] (and (consp x) (listp x))を一発で判別したい ↓ conspだけでいいのでは ↓ よくない ↓ ?←今このへん
553 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:56:48 ] 自分で述語用意すればいいじゃん・・。
554 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:04:15 ] 点対神経症だろw
555 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:07:37 ] CLの listp (点対でも真)とSchemeの list? (点対だと偽)の差が混乱を招いているのでは?
556 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:25:34 ] >>535 みたいなどこかの俺言語で育っちゃった人は 一度まじめにどっちかで矯正した方がいいよ。
557 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:34:25 ] 狼に拾われたがパンダに育てられて観賞用に
558 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:00:34 ] どっかってどこ? MITとかUCBあたり??
559 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:02:26 ] このスレとかでいいんじゃね?w
560 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:07:30 ] 535の脳内のどこか
561 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:30:21 ] >>556 これから独学でLisp習おうと思ってる。 今までプログラミング言語を真っ当に習ったことはなくUNIXのBシェルスクリプトが ちょっと使えるくらい。 こんな自分が、あとから矯正の必要がないように正しく学ぶためにはどうすればいいですか?
562 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:35:00 ] >>561 訳書は見てないけど >>544 なんて良いんじゃないかな。 実用的な例題で勉強できるから飽きないと思うよ。
563 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:37:43 ] >>561 わたしゃ独学でCLを学んでたけど、 定番の本だけはきっちり抑えておくとそこから、書き方を学ぶことができるよ。 もちろん、本に載ってなくって、知っておいたほうがよい方法やスキルというのも あるけど、それは実際に勉強会などを通じて人とのコミュニケーションをとっていく 事からだと思うな。 別に俺様言語でもいいけどさ。矯正は必要な場合はあるけど、実際に回りにschemer がいるかといえば別の問題があるからね。その点は指摘してる>>556 というのは 恵まれた環境を持っているといえるね。最近はハブサイトもできつつあるから、 独学者にとってもよい時代がくると思うよ。shiroさんのサイトみたいに人が集まってるとこ ろは自分から積極的に恵まれた環境を作るきっかけにはなるよ。
564 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:40:26 ] 定番ってのは、ANSI Common LispやPractical Common Lisp, PAIPあたりだけど。 オンラインのみで流れているスタイルに対してのよいドキュメントは 先日g000001さんたちがやっていたNorvig and Pitman 1993 (和訳あり)をよんで みればいい。
565 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:48:07 ] www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt これね。これはcommon lispの師匠に進められた文章でもあります。テンプレに含めて もいいと思う。
566 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:51:18 ] >>544 ktkr
567 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 07:33:49 ] >>562-565 thx!
568 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 07:37:36 ] >>565 その文章はとてもいいよね。 でもおれdeftype使ったプログラムあんまり見たことないんだけど気のせい?
569 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:50:06 ] >>568 > でもおれdeftype使ったプログラムあんまり見たことないんだけど気のせい? たしかにみたことがない。 あまりないのはしかたがないかも。 typecaseで場合分けすることや型宣言前提だろうし。
570 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:55:21 ] 俺は情報隠蔽はpackage, CLOSの仕事と割り切ってる。 だから使ったことない。> deftype
571 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:24:51 ] >>570 微妙にわかるような、わからないような…。 でも、棲み分けだよね。
572 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:00:48 ] >>565 この文章は俺もよく参考にさせてもらいました。ちなみに原文(英語)はこちら。 www.cs.umd.edu/~nau/cmsc421/norvig-lisp-style.pdf
573 名前:546=551 mailto:sage [2008/06/13(金) 23:36:37 ] >>555 なるほど。私が不勉強でした。 >>550 失礼しました。
574 名前:デフォルトの名無しさん [2008/06/13(金) 23:57:48 ] で、結局Cuspは使えるのか?!
575 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:09:21 ] こういうこと? (list? '(1 . 2)) ;=> #f (list? '()) ;=> #t (define (listp x) (and (not (null? x)) (pair? x))) (listp '(1 . 2)) ;=> #t (listp '()) ;=> #f
576 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:14:50 ] (list? '(1 2)) ;=> #t (listp '(1 2)) ;=> #t
577 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 05:38:16 ] まだ理解できてないじゃん 最初からおさらいしたら?
578 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:07:37 ] (list? '(1 . 2)) ;=> #f (list? '()) ;=> #t (list? '(1 2)) ;=> #t (define (listp x) (and (not (null? x)) (pair? x))) (listp '(1 . 2)) ;=> #t (listp '()) ;=> #f (listp '(1 2)) ;=> #t (define (non-nil-list? x) (and (not (null? x)) (list? x))) (non-nil-list? '(1 . 2)) ;=> #f (non-nil-list? '()) ;=> #f (non-nil-list? '(1 2)) ;=> #t
579 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:20:00 ] (define (nil-list? x) (not (non-nil-list? x))) (nil-list? '(1 . 2)) ;=> #f (nil-list? '()) ;=> #f (nil-list? '(1 2)) ;=> #t
580 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:21:54 ] 間違えた>>579 (nil-list? '(1 . 2)) ;=> #t (nil-list? '()) ;=> #t t (nil-list? '(1 2)) ;=> #f
581 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:11:14 ] DrScheme ver.4.0キタワ
582 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:24:12 ] plt-scheme.org/tour.html
583 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 12:58:53 ] >>578-580 いちいち無意味なもん貼るな。 自由帳はこちら。>>8
584 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:06:37 ] >>583 初心者に向かって「いちいち」とか書き込んでるオマエの方が「いちいち」ウザイw
585 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:07:38 ] 初心者は放って置けば消えていくJK。
586 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:21:11 ] 「On Lisp」の「第16章 マクロを定義するマクロ」スゲー
587 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 14:49:14 ] >>586 その気になれば作れるようになるよ。:-)
588 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:10:43 ] >>265 のambをlet-syntaxするマクロを書いたら、`...' が衝突した codepad.org/FhFcRNhU こうですか?わかりません! codepad.org/DOhmrD4x
589 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:53:50 ] >>588 codepad.org/DsQGNTC2
590 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:20:05 ] >>589 おお PLTの拡張かと思ったがR6RSに書いてあった。thx
591 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 19:33:58 ] 【産学連携】京大と日本IBM、大規模交通社会シミュレーションシステムを開発[08/06/11] news24.2ch.net/test/read.cgi/bizplus/1213353215/ ttp://pc.watch.impress.co.jp/docs/2008/0611/ibm.htm このシステムで使われてるシナリオ記述言語Qの説明を見ると、Dr.Scheme版が有る。 ttp://www.ai.soc.i.kyoto-u.ac.jp/Q/system_j.htm
592 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:34:24 ] Dr.Scheme ver.4.0ってset-cdr!が使えないの?
593 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:12:54 ] >>592 ver372までset-cdr!が使える。 pre399ぐらいでは使えなくなってた。ver4.0は400に相当してるはずで使えないと思う。 正直、不便になった。
594 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 23:29:46 ] ということは、実装によってはlist?を定数時間で計算できるな
595 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:10:36 ] 処理系依存の話題で恐縮ですが、Gaucheのオブジェクトシステムについてお聞きしたいです。 スレ違い、または既出だったら申し訳ないです。 用件を言うと、Gaucheのオブジェクトシステムで スロットに対するアクセス制御は困難でしょうか? (アクセス制御: C++, Java等にある private / public 的な機構) 現在、「プログラミングGauche」17章のオブジェクトシステムのあたりを読んでます。 自分は、Java->Ruby->(Haskell)->Scheme とやってきたので、どうもJava的なOOの発想があるようです。 せっかくオブジェクトシステムがあるのだから、 活用しようと思っているのですが、スロットのアクセス制御が無いと不安に思います。 method内だけ参照や変更を許すようなclassを定義したいなぁと思ったのが事の発端です。 「Gauche:スロットアクセス」で検索して出てくるページが参考になったのですが、 マクロとメタオブジェクトプロトコルを駆使してました。 やはり総称関数という機構を取り入れている以上、 単純にスロットをカプセル化はできないですかね? 長文すみませんでした。
596 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:13:54 ] いわゆるメソッドと違って、総称関数は特定のクラスの所有物じゃないからねえ。 とりあえず、その辺を管理する(指定する)仕掛けがいるわなあ。
597 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:14:38 ] 真面目な長文かけるならこんなゴミ溜めじゃなくてWilikiにでもかきなよ
598 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 02:18:57 ] >>595 アクセスコントロールはないです。
599 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:10:07 ] 整備兵 『80%?冗談じゃありません!現状でジオングの性能は100%出せます!!』 シャア 『脚は着いていない』 整備兵 『あんなの飾りです。偉い人にはそれが分からんのですよ!』
600 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:29:04 ] javaやC++と同じにしたいなら、同じ機構を用意すればいい。 wilikiの連中は、既存のシステムしか使わずに実行時に何かやろうとしてる。 おかしな事になるのは当然。こんなのと付き合う必要はない。 >>595 を含め大抵の奴はCLOSモドキなんて望んでない。 javaやC++でコンパイル後に何の情報が残るか考えれば判るはず。 さあ、やるんだ。
601 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:35:07 ] >>599 元ネタってガンダムなの!?
602 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 03:47:35 ] >>600 こうして、アプリケーションと同じ数だけのフレームワークが発明されるのであった。w (批判ではない。むしろこのあたりがLispの良さであろう。)
603 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 04:07:38 ] 資産の積み重ねができないわけですね これも数十年経ってもメジャーになれない理由の一つなのかな?
604 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 04:15:06 ] ANSIに規格がある言語はマイナーとは言えないだろう
605 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 05:03:15 ] >>595 CLOS系は「そういうもの(アクセス制御は気にしない)」だと思うのが吉。 文化の違い。 隠蔽したいなら、クロージャベースのオブジェクトシステムの方がいいんじゃないかな。
606 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 07:10:05 ] >>595 CLOSって、Java/C++系とは文化が違いすぎて、private/public/protectの区別がなくても さほど問題がないよ。この辺は>>605 さんの意見とかぶるね。 あの系統のオブジェクトシステムを作るなら、別に作成したほうがいいけど、できればCLOS の方を利用するように頭の発想を切り替えたほうがいいよ。CLOSのほうが柔軟な制御が できるのでね。
607 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:00:04 ] オブジェクトが必ずその名前のスロットを持っているとassertできる状況なら、 それを隠蔽する必要があるとは思えない。
608 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 08:16:27 ] CLOS使えだなんて口が裂けても言えん。
609 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:02:11 ] CLOSは、例えばアクセスコントロールを持つような 別の標準オブジェクトシステムのカーネルになるための 基本オブジェクトシステムとして考案されたが、 いつの間にか標準のオブジェクトシステムの座に着いている。 なんだ使ってみればCLOSのままでええやんってところか。
610 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:06:40 ] そこでFlavorsですよ。
611 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:27:16 ] >>609 この辺の事情はbit別冊のCLOS本に書いてある。 たしか井田さんがMLでの議論をまとめてる。 既存のCommonLoopsかFlovorsのどちらの流儀にするか揉めているところに、 汎用のカーネルを考案できないかとの提案があった。
612 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:30:26 ] >>597 そうですね。是非、そちらの方も活用させて頂きます。 scheme系は、まだ初めてから日が浅いこともあり、 気が引けてました。 >>600 私の不勉強で、どのようにJavaなどと同じ機構を実現するか分かりませんでした。 出直します。ただ、できるだけ独自の機構は避けたいと考えてました。 >>605-607 クロージャベースのオブジェクトシステムだと内部状態は隠蔽できますね。 ただ、CLOSとの相性・一貫性に不安があり、できればGaucheに標準的にある オブジェクトシステムだけで解決しようと思ってました. 皆さんのおっしゃるように、発想を切り替えてみようと思います。 >>596-608 最後に。皆さん、レスありがとうございました。とても参考になりました。 CLOSと、Java/C++系とは異なる発想でプログラムを設計するという事ですね。 CLOSを実際にもっと使用して、その発想の違いを考えていきたいと思います。
613 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:47:01 ] 人気の言語を作るには ---Being Popular--- practical-scheme.net/trans/being-popular-j.html を読んで妄想した事。 Lispにシステムハッキング機能を追加したら、インスタントLispマシンの出来上がり!! Lisp Override your Operating System...
614 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:03:12 ] >>613 つmovitz
615 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 13:51:43 ] >>592-593 LanguageをSwindleに設定したらset-cdr!が使えました。
616 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:13:16 ] >>615 ver4.0ってR6RSに対応したんだっけ?
617 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:47:57 ] setq 説得 set-cdr! 説得だああああ!
618 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:54:30 ] お〜い、山田く〜ん 617の座布団全部とれ!
619 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:34:39 ] >>616 ほぼR6RSを満たすSchemeや、独自のPLT Schemeなど複数の言語が選べる。 そして、異なる言語で書かれたモジュールをインポートできる。
620 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 17:41:42 ] >>616 >ほぼR6RSを満たすSchemeや まだR6RSに対応できてないの?言語選択はR5RSのままだし。
621 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 18:12:48 ] >>620 言語選択は一番上の ``Module'' を選ぶ。 ソース (DrSchemeのウィンドウの上半分) の最初の行に #!r6rs 次の行に (import (rnrs)) それ以降の行に定義を書いて Runのボタンを押す。
622 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:12:34 ] r6rsモードだと#lang schemeの組み込み関数とかsrfiとか使えなくね?
623 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:48:02 ] R6RSになって「R5RS用のSRFI」は使えてるの?
624 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 19:59:04 ] Revised6 Report on the Algorithmic Language Scheme www.r6rs.org/final/r6rs.pdf Revised6 Report on the Algorithmic Language Scheme ― Standard Libraries www.r6rs.org/final/r6rs-lib.pdf Revised6 Report on the Algorithmic Language Scheme ― Non-Normative Appendices www.r6rs.org/final/r6rs-app.pdf Revised6 Report on the Algorithmic Language Scheme ― Rationale www.r6rs.org/final/r6rs-rationale.pdf 基本的には上2つがユーザーに重要な情報。 #次のテンプレに入れてください。
625 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:05:05 ] ちょっと聞きにくい質問なんですが、 R6RSってR5RSとかと比べてどうなんでしょうか。 まだ出たばかりで実装は少ないと思いますが、 今後、多くの処理系で実装が進むのか、 また、ユーザとしてもR6RSへの移行を意識しておくべきなのか、 そういったことです。 ちょっと漠然とした質問でうまくまとめられなくてすみません。
626 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:10:00 ] >>621 (import (rnrs)) ↓↑ (import (rnrs (6))) どっち?
627 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:14:27 ] >>621 補足 特殊トークン #!r6rs はソースがR6RS準拠であることを示す。コメント扱い。
628 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:19:16 ] (import (rms)) かとおもった。
629 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:25:35 ] slibはちゃんと使える?
630 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 20:44:36 ] >>625 R6RS決定時からPLT Scheme、Chez Scheme、Scheme48は近いうちにR6RSを採用すると言われていました。 今回、PLT Schemeが出してきたので、先行していたScheme48に続いて2つ目の実装かな。 Chez Scheme v7.4は部分的にR6RSのプリミティブが使えるようになってますが「will soon support R6RS standard.」となってるので、 次のアップデートで完全対応だと思います。 自分も含めたユーザーは実装が出揃って、ある程度比較記事などを見たうえで行動してもいいと思います。 今後、色々な問題点が表面化するでしょうから。 うまくいけばR6RS対応の色々な処理系に対するポータビリティは高くなる「ハズ」ですがw
631 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:19:15 ] >>628 Join us now and share the software; You'll be free, hackers, you'll be free. って超音痴で歌うのか!
632 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:20:10 ] Scheme48ってR6RSにもう対応してましたっけ?
633 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:22:20 ] Fmmm..... なぜあなたは超音痴だと確信したのですか?
634 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 21:32:05 ] >>633 一度聴いた事あるです orz
635 名前:デフォルトの名無しさん [2008/06/15(日) 21:43:46 ] >>631 >Join us now and share the software; >You'll be free, hackers, you'll be free. これか…… jp.youtube.com/watch?v=9sJUDx7iEJw&NR=1
636 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:09:42 ] >>622 (import (rnrs) (prefix (scheme base) scheme:))
637 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:19:10 ] Gauche-gl入りバージョンをリリースしました。(Gauchebox-0.8.13-box2.exe) sourceforge.net/project/showfiles.php?group_id=25227&package_id=275266&release_id=607291
638 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 19:20:02 ] ガウチェ(・∀・)
639 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:56:24 ] OpenBSDでClispをビルドすると なぜか実行ファイル作成機能が壊れてしまうので ソースを追ってみたのですが とても不思議な現象に遭遇しました。 実行ファイルを指すファイルディスクリプタから readで読み込む部分の前に 読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと EFAULTが起こります。 読み込み先メモリに4000バイト間隔で1バイトの読み込みOR書き込みを行ってから readすれば正常に動作します。 なぜでしょう? ちなみに4000バイト・EFAULTというのはi386プロセッサの場合で armプロセッサの場合はそれぞれ3999バイト・EACCESになります。
640 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:57:20 ] >639 まぁとりあえずスレ鯛みておちつけ
641 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:13:55 ] CLispのビルドの問題なのでスレ違いじゃないと思ったのですが…
642 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:16:41 ] つか、もし本当なら OS のバグ(つまりスレチ)じゃね?
643 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:22:38 ] CLispならCommon Lispスレ行って聞いてみたらどう? pc11.2ch.net/test/read.cgi/tech/1201402366/
644 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:29:25 ] 別にすれ違いだとは思わないよ。ただし、それにコメントができる人はほとんどいなさそう。
645 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:36:41 ] >>644 >ただし、それにコメントができる人はほとんどいなさそう。 あら、そう。
646 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:39:10 ] >>644 氏ね
647 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:40:37 ] わかってるくせにwww
648 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:42:01 ] OpenBSDのスレで聞けや、クズ
649 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:44:43 ] いや、質問っていうよりは、報告したかったんじゃないのかなw
650 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:57:29 ] 言葉の使い方もシランガキが集まってきたな。
651 名前:デフォルトの名無しさん [2008/06/16(月) 23:58:43 ] >>639 >readで読み込む部分の前に >読み込み先メモリが一度は少なくとも4000バイト間隔で先頭から末尾までアクセスされてないと >EFAULTが起こります。 部分の前に 一度は少なくとも はどういう意味でしょうか? 文章を読みこなせません。
652 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 00:18:00 ] 仮割り当て状態のページに I/O するとエラーになるというんだろ。 本当なら OpenBSD のバグなので、そちら方面で報告すべし。
653 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:37:10 ] 別にすれ違いだとは思わないよ。 第一、そんなことも知らないと見下されてるわけか。バカにされたもんだな。 そういうことを聞いてるんじゃないってことがなぜ伝わらないのか。 情報があるなら教えて欲しい、それだけだ。
654 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:54:56 ] >>65 最初の3行は不要 なぜ馬鹿にされたのか、なぜ伝わらなかったのかを考えたほうがいい
655 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 01:55:27 ] >>654 は>>653 へ
656 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 03:20:29 ] >>636 でもこんなんなる (car (scheme:list 1 2 3)) mcar: expects argument of type <mutable-pair>; given (1 2 3) (scheme:car (list 1 2 3)) car: expects argument of type <pair>; given {1 2 3}
657 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 04:18:35 ] >>654 > なぜ馬鹿にされたのか、なぜ伝わらなかったのか 運悪くこのスレに馬鹿が集まっていたからですね。
658 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 11:12:40 ] 運の悪い奴って何やっても駄目だよな〜
659 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 13:56:49 ] >>656 list と pair では型が違うと言ってるみたいだね。
660 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 14:12:29 ] (scheme:car ((scheme:list 1 2 3)) とか (car (list 1 2 3)) なら動くんだろ?
661 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 15:33:58 ] ネタか・・・
662 名前:639 mailto:sage [2008/06/17(火) 17:55:27 ] 具体的にはspvw_memfile.cの1196-1198行目(clisp-2.45の場合)に READ(&old_fsubr_tab,sizeof(fsubr_tab)); READ(&old_pseudofun_tab,sizeof(pseudofun_tab)); READ(&symbol_tab,sizeof(symbol_tab)); というコードがあるのですが、 3つ目のREADマクロ中のread(2)が失敗し、 i386ならEFAULTが、armならEACCESがerrnoにセットされます。 ところが3つ目のREADマクロの前に { int i; for ( i = 0 ; i < sizeof(symbol_tab) ; i += 4000 /* i386の場合。armの場合は3999 */ ) ((char *) &symbol_tab)[ i ] = '!'; /* '!'という値には意味はありません */ } というコードを挿入すればread(2)は失敗しません。 i386なら4001以上、armなら4000以上のiの増分ではread(2)が失敗します。 symbol_tabというのはマクロで、実体はsymbol_tab_dataを指していますが old_fsubr_tabとold_pseudofun_tabはbssセクションに置かれているのに対し symbol_tab_dataはdataセクションに置かれているという違いがあります。
663 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:07:22 ] >>657-658 運の悪い馬鹿は自己申告しなくて良し。
664 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:13:29 ] >>663 お前という馬鹿がここにいるのは>>657-658 の運のせいではないですよ^^
665 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:23:09 ] >>664 常駐乙
666 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 18:46:40 ] 運の悪い奴は何やっても駄目、という言葉を実感しつつあるw
667 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:11:46 ] 適当な実感でものを判断する奴も全然駄目だけどねw
668 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:28:43 ] 「情報があるなら教えて欲しい、それだけ」ならじっくり待ってろよ、まったく。
669 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 19:31:29 ] >>662 そこまで追ったのなら、馬鹿はほっといて、短い(CLISPに依存しない)再現プログラムを 作ってOpenBSDの人たちへ報告するのが良いと思う。
670 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 20:47:23 ] >>662 その情報、ちゃんとOpenBSDの中の人たちに連絡したら感謝されると思うよ。
671 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:31:58 ] >>656 , >>660 ネタかと思ったけど、R6RSに慣れるまで大変ですねw PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。 mutable(変更可能)なペアは別のデータ型として提供されてるようです。 たぶん>>656 , >>660 で言ってることがそれだと思います。 手持ちのプログラムを食わせてみたら同様の文句を言われましたw 当面、372のままで行きます orz
672 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:40:50 ] ようわからんが、C→C++でconstの扱いが変わったような感じなのかな。
673 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:50:10 ] C++/CLIにポインタが2種類あるような感じだな
674 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:56:59 ] immutableなconsセルというと後藤英一氏のHLISPが元祖だろうな。
675 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:37:18 ] >>PLT Scheme 4.0 では、ペアはimmutable(変更不可)になりました。 これ、PLTのどっかに「どうなるかわかんないけど、取り合えずやってみるぽ」って感じの文章なかったっけ? PLTさんお願いです、今回だけで止めてください m(_ _)m
676 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:47:56 ] immutableにして何か利点はあるんですかね? GPU対応とかconcurrent対応ぐらいしか思いつかない。う〜む。
677 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:00:52 ] こうやって解決しないの? (define cons mcons) (define set-car! set-mcar!) (define set-cdr! set-mcdr!)
678 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:15:13 ] Schemeはペアはimmutableでも良いんじゃないかなあ。 そんなに破壊的操作してるもんかね。
679 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 03:27:38 ] >>678 Streamを使えば破壊的操作を使うから多いと思う。
680 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 07:39:44 ] >> 677 (define cons mcons) が define-values: cannot change constant identifier: cons な エラーになります orz
681 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:02:56 ] >>680 マクロは?
682 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 08:21:59 ] DrSchemeはネタの巣窟ですね MzSchemeなら問題ないです
683 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:03:53 ] >>675 これ? blog.plt-scheme.org/2007/11/getting-rid-of-set-car-and-set-cdr.html
684 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:35:55 ] >>683 それだ!サンクス で、結局やることになっちゃったんだな。4.0でこうなったってことは... そりゃ自分で書いたコードなら直すのも簡単だけどね orz
685 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:26:10 ] set-car!: name is not defined, not a parameter, and not a primitive name set-mcar!: name is not defined, not a parameter, and not a primitive name 使えない orz
686 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:29:02 ] >>681 これで一応動く(PrettyBigモードとか)。SICPの学習には不便しないだろう。 (ただしR6RSとは共存出来ない。) (define-syntax cons (syntax-rules () ((_ a b) (mcons a b)))) (define-syntax set-car! (syntax-rules () ((_ a b) (set-mcar! a b)))) (define-syntax set-cdr! (syntax-rules () ((_ a b) (set-mcdr! a b))))
687 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 15:55:29 ] ;こんな感じ。 ;pre.plt-scheme.org/plt/doc/reference/mpairs.html (require scheme/mpair) (define-syntax cons (syntax-rules () ((_ a b) (mcons a b)))) (define-syntax set-car! (syntax-rules () ((_ a b) (set-mcar! a b)))) (define-syntax set-cdr! (syntax-rules () ((_ a b) (set-mcdr! a b)))) (define-syntax list (syntax-rules () ((_ a ...) (mlist a ...)))) (define Qoo (list 3 4)) (set-car! Qoo '(5 6)) (set-cdr! Qoo '(7 8)) (display Qoo) ; => {(5 6) . (7 8)}
688 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:07:21 ] >>687 サンクス! でも、こんどは (map cons lst1 lst2) が大破しました... "orz" それなりの混乱が予想されるのにこうなったって事は何か良い見返りがあるはずだよね... 「隊長!comp.lang.schemeのアナウンスからPLT方面に潜入して偵察を試みてみます。自分が帰ってこないときは英語が解読できなくて玉砕したと思ってください orz」
689 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:10:45 ] (define Qoo (list )) (mlist? Qoo) ; => #t (display Qoo) ; => () なぜか{}にはならない。
690 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:13:11 ] >>688 pre.plt-scheme.org/plt/doc/reference/mpairs.html ココの関数はマクロで修正しないとダメポ。 mmapが orz
691 名前:688 mailto:sage [2008/06/18(水) 16:24:41 ] 隊長!自分は現在683より報告のあったBLOGに到着しました。 驚くことにcomp.lang.schemeのアナウンスにはそれらしい情報は例のBLOGにしかありませんでした。 さらに驚くことにBLOGに対するコメントは好意的なものばかりのようです。 もしかして、自分はバカなのでしょうか "orz"
692 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:31:12 ] Schemeは「破壊的操作の時だけアホになります」って言ってるみたいだ… cons せぇっと! car りば〜すぅ! せっとくだー! eq? みたいな。
693 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:33:42 ] (define-syntax map (syntax-rules () ((_ a b ...) (mmap a b ...)))) (map display (list 1 2 3 4 5)) ; => 12345{#<void> #<void> #<void> #<void> #<void>} あれ?うまくいかない?
694 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:36:22 ] (define-syntax map (syntax-rules () ((_ a b ...) (mmap a b ...)))) (map (lambda (x)(* x x)) (list 1 2 3 4)) ; => {1 4 9 16} 大丈夫らしい。
695 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:39:33 ] 正直、Schemeを名乗らないで別の名前を付けてくれと思った。
696 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:40:56 ] Scheme 2.0 って感じだなw
697 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:45:05 ] 今後は従来のをScheme/NewJerseyとかダッサい呼び方するんだろうかw
698 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:49:23 ] 隊長! BLOGにはimmutableなpairでないと (define l (list 1 2 3 4 5)) (map (lambda (x) (set-cdr! (cddr l) 5)) l) が変になるって書いてあるから試してみました。 Gauche(R5RS) (#<undef> #<undef> #<undef>) たしかにちょっと変。 Petite Chez(R5RS) (#<void> #<void> #<void> #<void> #<void>) たしかにちょっと変。 Guile(R5RS) (#<unspecified> #<unspecified> #<unspecified>) たしかにちょっと変。
699 名前:698 mailto:sage [2008/06/18(水) 16:50:09 ] でもR6RSな処理系ではちゃんとエラーになっております。 Ikarus(R6RS) Unhandled exception Condition components: 1. &assertion 2. &who: map 3. &message: "list was altered" Larceny(R6RS) Error: car: 5 is not a pair. Ypsilon(R6RS) error in car: expected pair, but got 5 immutableなpairってやつはR6RSで必要になったから導入したわけじゃないのでしょうか? 自分はちょっと混乱しています "orz"
700 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:54:50 ] >>698 d。俺が馬鹿だったw
701 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:57:25 ] 安全側に改良された感じだな。互換性無視については確信犯だろう。w
702 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:00:02 ] Immutive Schemeって評判いいの?
703 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:02:15 ] >>698 >>699 それはmapの安全性の問題では?
704 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:05:25 ] >>698 のGaucheは、 gosh> (map (lambda (x) x) '(1 2 3 . 5)) (1 2 3) と整合。set-cdr!の結果が#<undef> Guile 1.8.3は、 > standard input:1:1: In procedure map in expression (map (lambda # x) (quote #)): > standard input:1:1: Wrong type argument in position 2: (1 2 3 . 5) > ABORT: (wrong-type-arg) でエラー。
705 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:10:32 ] immutable list相手なら、 (define (map f x) (cond ((not (pair x)) (error "not pair")) ((null? x) ()) (#t (cons (f (car x)) (map f (cdr x)))))) の最初のチェックが不要になることが静的に分かるケースがあるわけですね。
706 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:13:16 ] (define-syntax car (syntax-rules () ((_ a) (mcar a)))) (define-syntax cdr (syntax-rules () ((_ a) (mcdr a))))
707 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:19:18 ] あまり抵抗せずに郷に入れば郷に従うのが良いのでは? 昔の教科書を一字一句変えずに動かしたいという理由が判らん。
708 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:40:54 ] (define-syntax pair? (syntax-rules () ((_ a ) (mpair? a ))))
709 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:48:02 ] お言葉ですが >>707 さん、自分がDrSchemeを使うのは「昔の教科書を一字一句変えずに動かしたい」からなのです>< バカと呼んでもらってかまいません... やはりv372への「戦略的な撤退」でしょうか "orz"
710 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:58:15 ] 目的に合った処理系を。
711 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:02:27 ] >>710 そうだよね。勉強が目的なのにそれ以外にエネルギー使うの無駄が多すぎる。 読み終わってから試行錯誤したほうがいいんじゃない?
712 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:31:53 ] R"5"RSの教科書的実装ならばScheme48がいいかも 近々R6RS準拠になる予定だし
713 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:32:07 ] immutableにした理由って、webアプリのインジェクション対策?
714 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:35:24 ] >>713 なわけないw
715 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:36:15 ] >>712 SICPはR5RSやR6RSってわけじゃないんだ。 DrScheme v372以前のPrettyBig modeが一番そのままで書けると思う。 他の処理系だとbegin使えとか言われる表記が満載>SICP
716 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:37:16 ] 新しいDrSchemeってドキュメントにThreadの項目が増えたの?
717 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:38:07 ] >>710 >>711 >>712 >>715 みなさんご親切にありがとうございます m(_ _)m どうやら「メジャーバージョンアップ!」しかも「R6RSに触れられる!」とあって舞い上がってしまったようです... でも、今の自分はDrSchemeのマクロステッパーなしでは生きられません "orz" 耐え難きを耐え、しばらくの間4.0は封印しておきます><
718 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:38:18 ] SICPならMIT-Schemeを使うとか 最近のMITはMzSchemeらしいけど
719 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:42:44 ] >>718 つまりDrSchemeのMzSchemeモードと中身は同じ。
720 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:43:01 ] >>718 ありがとうございます。MIT-Scheme使ってみたいんですが... 以前試した時はバイナリーが動かなくて、ビルドもできなくてあきらめてました (orz) カーネルも新しくなったからもう一回挑戦してみようかと思います><b
721 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:15:24 ] 最近のMITのSchemeはPythonじゃないの?
722 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:46:58 ] 最近のMITのSchemeがPythonだとは初耳だw
723 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:37:58 ] Scheme初心者の俺が通りますよ 質問なんだけど、トップレベルってなんか特別なの? (define cc #f) ;A (display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga) ;B (begin (display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga) ) トップレベルでこーやったとき、Aが無限ループにならないのにBが無限ループになるのが理解できないの...
724 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:45:37 ] >>723 継続はトップレベルをまたげない処理系が多い。(実装依存) そういう意味ではトップレベルは特別。
725 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:50:50 ] >>724 そーなのかーありがとー 実装依存か 処理系もかかないかんかったね がうちぇです もう一度いいます がうちぇです
726 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:51:51 ] あれてきたときにスルーするをCommon Lispでどうかくのか? (progn (loop for i in '(>>657 >>658 >>663 >>664 >>665 >>666 >>667 >>668 ) do (unintern i)) (gc) 'Done)
727 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:13:30 ] >がうちぇ セロ弾きの「ごーしゅ」じゃなかった?
728 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:19:17 ] ガウチェ(・∀・) の方がなんとなく小気味良い気がして
729 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:19:59 ] がうちぇのがしっくりくるのは間違いない
730 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:25:26 ] がうちぇの方が美味しそう
731 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:28:04 ] ガウチェ(・∀・) のほうがかわいいことは確か。
732 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:40:36 ] >>723-725 DScheme v372 では両方ともhogefugamogaが返ってきた。一応、報告のみ。 理由は説明できないw
733 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:50:00 ] >>724 R6RSでは明確に決まってなかったっけ?
734 名前:723 mailto:sage [2008/06/19(木) 02:12:50 ] >>732 両方無限ループならわかるけど無限ループらないのはわからないwwww アリガト!
735 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:55:33 ] プログラムのトップレベルでの(begin <表現形式1> ...)は、beginのボディを形成する連続する式、定義、構文定義に等しい。(R5RS 5.1) (display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga) においてcall/ccが返し、ccに記憶される継続は (lambda (x) (print (display x)) (loop (print (eval (read) (interactive-environment))))) と看做せるから無限ループに陥らない。 他方、 (let () (display (call/cc (lmabda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga)) においてcall/ccが返し、ccに記憶される継続は (lambda (x) (display x) (display 'fuga) (cc 'moga)) と看做せるから無限ループに陥る。 (ccの末尾再帰呼出し) beginをR5RS巻末のように合成構文として実装すると後者になるが 原始構文として規格通りに実装すると前者となる。
736 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 10:47:48 ] >>735 ありがとう。 つまりbegin構文を、Gaucheは合成構文として実装してるけど、 DrSchemeは原始構文として実装してるということみたいですね。
737 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 13:21:59 ] >>735-736 質問です。原始構文として実装してるということは、ifやletのような特殊形式ということなんでしょうか。 初心者なので特殊形式を知ったばかりですが、SICPにnew-ifという例があったのと似てると思いました。
738 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:26:32 ] >>735 >>736 R5RSの「原始構文」って何よ?
739 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:37:01 ] Schemeのプリミティヴ構文はif、quote、lambda、define、set!であり、 letやcondなどは導出構文という事になってます。 (但しbeginやdefine-syntax、let-syntaxはマクロでは導出できない) Common Lispでは特殊形式とマクロという区別がありましたが Schemeでは両方構文として扱われます。 どうもbeginはトップレベルでは「beginがない式と同等に扱われる」のは表面上であり、継続は (lambda (x) (begin (display x) (display 'fuga) (cc 'moga)))) ;; beginは冗長 として扱う処理系が多いようですね。 原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。
740 名前:723 mailto:sage [2008/06/19(木) 22:01:45 ] >>735 ふおおなんか説明してくれてありがとうなんだけど何言ってるかわっかんねw >beginのボディを形成する連続する式、定義、構文定義に等しい。 って、つまりbeginで囲ってないのと同じ意味になるぜよってこと?
741 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:09:48 ] >>740 つまりR5RSの定義ではbeginのトップレベルにおいてDrSchemeのような挙動が期待されてる。 Gaucheを含めた他の処理系の挙動はR5RSとしてはおかしい。R6RS対応だからというわけでもないし。 これは>>724 で言ってた処理系の実装依存の問題というより、うまく実装できていない処理系が多いということだと思う。
742 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:15:45 ] それがR5RSの仕様に反する事をしないScheme48でも無限ループになるんですよ。 トップレベルのbeginはローカルスコープを作りませんよ〜くらいの意味にも取れますから 無限ループになってもR5RSに反するとは言い切れませんね。 R5RSは細かく呼んでいくと解釈の分かれる部分が多々ありますし。
743 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:17:17 ] typo 呼んでいく→読んでいく
744 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:20:12 ] Scheme48でも無限ループになるからR5RSではトップレベルのbeginで無限ループを作ることが仕様に盛り込まれてると? Gaucheのバグだと思うなぁ
745 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:31:28 ] いや、R5RSを読む限りでは無限ループになるのもそうでないのも どちらも規格に反しない、という事だと思います。
746 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:44:07 ] 初心者の俺様からすれば無限ループになってくれたほうが理解しやすくて幸せだぞ
747 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:49:58 ] 仕様というのは、それに従って作ればバグが無いものが作れるとは限らない。 だけど、バグが無いものを作るべきだと思うよ。
748 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:08:58 ] Schemeってどやってshort codingするの? CならハッカーのたのしみやShort Coding等の本があるのに情報不足でしょ?
749 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 03:39:10 ] どうしてshort codingしたいの?
750 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 07:10:41 ] ChickenってWindowsBinaryのヤツ使えばexe吐けるの? とりあえずインスコしてやってみてもうまく出来ないし公式サイトにもWindowsでexe作る方法書いてないっぽいし困ってしまったよ! 教えて!エロい人!
751 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:20:26 ] クイックソートをcps変換したときappendってタイプするのがめんどくなって (define ++ append) ってしたけどこれはshort codingに入りますか
752 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 09:38:42 ] 大きなletrecの下で
753 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 11:40:49 ] exeなんて飾りです。エロい人にはそれがわからんのですよ。 mingwとmsysをまずインストールしましょう。 そしてchickenのwindows用binaryをCドライブ直下に解凍しましょう。 msys.batを起動しましょう。 export PATH=/c/chicken/bin:$PATHと打ち込んでPATHを設定しましょう。 作られる実行ファイルはlibchicken.dll等に依存するのでPATHを設定しないと起動しません。 vi foo.scmと打ち込んでSchemeソースを作成しましょう。 csc foo.scmと打ち込んでコンパイルしましょう。 ./foo.exeと打ち込んで実行しましょう。 ttp://www.mingw.org/ ttp://nchc.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe ttp://nchc.dl.sourceforge.net/sourceforge/mingw/MSYS-1.0.10.exe
754 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:43:26 ] >>739 > 原始構文という言葉はプリミティブ式のうち構文であるものを指すつもりで使いました。 かなり細部に渡る話をしているので、言葉は厳密に使った方がいいと思います。 特に今ではR6RSがあるので、何を指していっているのか分からなくなります。 R6RSには"primitive syntax"(9)というのがあって、 > Schemeのプリミティヴ構文はif、quote、lambda、define、set!であり、 とは違うものです。R5RSには"primitive syntax"という用語は出てきません。 またこれら(if, quote, ...)を使ったformは、R6RSの"primitive syntax"(9)の一部である primitive expression types(9.1)にも含まれません。 R5RSでは含まれていた(4.1)のですけれど。
755 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:14:41 ] (原始式のうち構文キーワードで始まるリスト)と定義、ならよろしいか?
756 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:33:57 ] 追加:R5RSにおける
757 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:34:34 ] R5RSでは内部表現を「リスト」と限定していません。 また意味論もリスト上で定義されていません。
758 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:37:42 ] そういう根源的なところで Scheme って本質的に Lisp ではないんだよな (茶々すまん)
759 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:45:19 ] 少なくとも形式的構文上はリストとして定義されてませんか?(R5RS 7.1) 意味論上はともかく。
760 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:51:32 ] 解釈改憲より新しく書き直したほうが建設的だと思うけどな 実装を書き直す人は腐るほどいるが
761 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 14:02:24 ] >>759 仕様もR6RSでやったところ。
762 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 14:02:46 ] 間違えた>>760 へのレス
763 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:11:45 ] >>759 (f a b)が(f . (a b))と同じとは文法には書いてない。 印字表現が似ているだけなのでは? そもそも「構文上リストとして定義」とはどういう意味なのでしょうか?
764 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:21:32 ] <lambda expression> --> (lambda <formals> <body>) <quotation> --> '<datum> | (quote <datum>) <assignment> --> (set! <variable> <expression>) <conditional> --> (if <test> <consequent> <alternate>) <definition> --> (define <variable> <expression>) | (define (<variable> <def formals>) <body>) | (begin <definition>*)
765 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:23:38 ] ただし意味論上の<list>と同一ではない
766 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:36:42 ] >>741 んなことない。トップレベルでの継続がどこまでの範囲を補足するかの 規定がR5RSには無いんだから、どっちの解釈もあり。 Gauche系の解釈でもトップレベルbeginをletに展開しているわけじゃない (letに展開したらdefineがうまくいかない)。 コンパイルと実行の単位の問題で、継続の捕捉範囲が変わってるだけ。
767 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:59:38 ] 生存期間が書かれてなければ、無限生存期間なのではないでしょうか。 コンスセルがそうであるように。
768 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:15:07 ] >>764 これは「構文上リストとして定義」ではないです。 これが「構文上リストとして定義」なら、 他の言語に良くある<式> --> ( <式> ) までそうなってしまいます。 そもそも「構文上リストとして定義」という概念はないと思います。 リストには、シグネチャや意味が付いてまわりますから。
769 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:18:32 ] >>723 > ;A > (display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) > (display 'fuga) > (cc 'moga) (call/cc (lambda (c) (set! cc c) (cc 'hoge))) (display 'fuga) (cc 'moga) だとどうでしょう?
770 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:28:28 ] <list> --> (<datum>*) | (<datum>+ . <datum>) | <abbreviation> <datum> --> <simple datum> | <compound datum> <simple datum> --> <boolean> | <number> | <character> | <string> | <symbol> <symbol> --> <identifier> <identifier> --> <initial> <subsequent>* | <peculiar identifier> <initial> --> <letter> | <special initial> <letter> --> a | b | c | ... | z <special initial> --> ! | $ | % | & | * | / | : | < | = | > | ? | ^ | _ | ~ <subsequent> --> <initial> | <digit> | <special subsequent> <digit> --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <special subsequent> --> + | - | . | @ <peculiar identifier> --> + | - | ... と辿れば一応リスト。(構文キーワードも識別子だから) 他の言語に良くある<式> --> ( <式> ) はSchemeには存在しない。 うーん、苦しいw
771 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:39:07 ] aclって今でもアホみたいに高いの? USでは$599 (アカデミックユーザ)からとはかかれてたが。
772 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:06:43 ] レス遅くてサーセン >>753 指定されたパスが見つかりません。(←MSYS.bat上だと文字化けしてる *** Shell command terminated with exit status 1: /chicken/bin/chicken test.scm -output-file test.c -quiet って言われてしまうお… やった OS WinVista Ultimate MinGW 5.1.4は元から入れてあった MSYS 1.0.10インスコ(インスコ途中にMinGWの場所指定しろって言われたからした PATHをchicken/binな場所に通した msys.bat実行した csc test.scm とかしてみたら上記エラー /(MSYSインスコ場所直下)にchickenフォルダ移してみたりとかもやってみたけどダメだったぜ… よくわかんねーけど ttp://alohakun.blog7.fc2.com/blog-entry-912.html とかみるとoファイルが吐かれるらしいけど、何もファイル吐かれてない… .cも吐かれてない ボスケテ
773 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:06:26 ] >>772 パス指定がどっかで決め打ちになってる予感。
774 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 23:23:54 ] >>772 c:\chicken\bin>csc -dynamic test.scm ってやってみるとgccがないって怒られるけど、.cファイルは作られる。 おそらくオプション指定の問題。
775 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:18:40 ] csiは起動しますか?
776 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:20:48 ] 自分の環境でビルドすると.scmから.exeファイルが作られるだけで.cも.oも残りませんね
777 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 00:25:43 ] 結局gccが必要なのか。
778 名前:デフォルトの名無しさん [2008/06/21(土) 00:31:58 ] どうもいろいろ試してみた所772のエラーメッセージは chickenディレクトリがc:\にない場合に出る模様。 c:\chickenになってますか?
779 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 09:50:28 ] >>774 コマンドプロンプトからそれやってみると同じエラーが出る罠 >>775 今やってみたらコマンドプロンプトだと出来るけどMSYSでやってみたら起動しなかった エラーもなんも表示されない不思議な状態になった もちろん何か入力してもなんもなし >>778 d:\Scheme\chicken\binに置いていてお PATHの設定でそっち指定してたけど chickenをC直下において >>753 の通りにパス設定したらエラーが変わったお 'gcc' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 *** Shell command terminated with exit status 1: gcc test.c -o test.o -c -fno-strict-aliasing -DHAVE_CHICKEN_CONFIG_H -Os -I /chicken/include で、とりあえずcファイルはできた で、エラーに従って export PATH=/c/MinGW/bin:$PATH とかしてみたら Info: resolvingうんたら〜ってメッセージが5個くらい出たけどtest.exeが出来ました! ついでにobjdump -p test.exeしてみたら DLL Name: libchicken.dll DLL Name: KERNEL32.dll DLL Name: msvcrt.dll だってさ MinGW周りのDLLはいらないっぽいのが不思議だ… というわけでした!みんなありがと!愛してるぜ!
780 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:25:18 ] >>779 MinGWって、C++のスレッド関係で独自ランタイム必要とするだけで、 CならMSのCランタイムだけで大丈夫じゃなかったっけ?
781 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 00:05:58 ] >>200 番台でやってた継続の例をwikipediaでみつけた。 en.wikipedia.org/wiki/Call-with-current-continuation >>268-271 と似てる〜
782 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 02:46:40 ] >>767 は >>766 へのレス? 生存期間の話じゃないよ。継続の「底」をどこに取るかって話。 R5RSのトップレベルの実行はREPLの実行と区別されていない。全ての トップレベルフォームが見えてる状態で一気に実行するところを 継続の起点と見るか、REPLにおいてトップレベルフォームひとつひとつ を実行するところを継続の起点と見るか、って違い。 R6RSではREPLそのものが無くなって、トップレベルの意味は明確化された。
783 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 09:31:57 ] REPLって何?
784 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 09:39:13 ] Random Electrical Pulse Light
785 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:04:02 ] reed eeval print lup
786 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 10:08:03 ] 呪文:よんでひょうかしていんさつしてくりかえす
787 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:12:56 ] ググれ
788 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:45:05 ] 話は変わるけど、Gaucheboxに入ってるGaucheってmingwバイナリパッケージのより新しい? pegとかも入ってるんだけど…。
789 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:26:09 ] ; >>783 ;The Read-Eval-Print Loop (define (driver-loop) (begin (let ((input (read))) ; read (let ((output (eval input))) ; eval (display output))) ; print (driver-loop))) ; loop
790 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:45:57 ] >>788 practical-scheme.net/wiliki/wiliki.cgi?Gauche%3aGauchebox#H-1vw6gwn 基本的にGaucheのCVS HEAD(今はSubversion trunk)をビルドするので、 その時点の最新版が入る。リリース版の0.8.13より新しい。
791 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:51:15 ] (define (eval x) x) (define (driver-loop) (begin (let ((input (read))) (let ((output (eval input))) (display output)(newline))) (driver-loop))) (driver-loop)
792 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 16:23:43 ] >>791 Lispではよくあることだが、式と値を混同しているね
793 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:53:32 ] >>792 それではevalのお手本をどうぞ。
794 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:01:24 ] >>791 > (define (eval x) > x) これマジレスなのw
795 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:08:34 ] S式を 評価するのに 値呼び
796 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:14:49 ] 評価頼られてるのに、自分はとんずらして、他に丸投げかよ。
797 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:25:15 ] あと、継続渡しと称して (lambda (x) x) を渡すこともあるね
798 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:49:16 ] 普通にこれで動く。 (define (driver-loop) (begin (let ((input (read))) (let ((output (eval input))) (display output)(newline))) (driver-loop))) (driver-loop) でもevalのお手本、観てみたいな。
799 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:51:28 ] ∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ ( \ / _ノ | | .\ “ /__| | \ /___ /
800 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:59:06 ] 批判してる奴ってなんでそんなにエバルんだろう?
801 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:04:05 ] >>797 それ (define (eval x) (lambda (x) x)) という意味? (+ 2 2) => #<procedure> になると思うよ。ちょっとマズイ気がする。
802 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:32:42 ] 修辞疑問のお手本ですか
803 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:01:45 ] Lisp Scheme FAQ 「修辞疑問文」 要点を強調するために発せられる修辞疑問文では、答は期待されていない。 多くの場合、答は疑問文自体に含まれるか明白だからである。 前提的疑問文は、答えうるものが何であれ、その人が断定しようと望んでいること以上の情報を含んでしまうだろうから、 ジョークとして用いられたり、相手を困らせるために用いられたりする場合がある。 例) 批判してる奴ってなんでそんなにエバルんだろう? 修辞疑問のお手本ですか
804 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:03:20 ] なるほど「修辞疑問のお手本ですか」は修辞疑問文の再帰的な定義になっているわけだ。w
805 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 06:53:39 ] つ「修辞疑問って答えを期待してないんじゃないんですか?」
806 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 06:57:39 ] >>803 この例の会話ヘンだよ。 >例) >批判してる奴ってなんでそんなにエバルんだろう? <=答えを期待してない >修辞疑問のお手本ですか <=なぜか答えてるw
807 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:54:34 ] 期待してないものが思いがけず手に入ることだってあるんですよ
808 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 15:39:59 ] 修辞疑問の意味もわかってないのに使うからだよw みっともないなぁ。
809 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:57:26 ] これは勝利宣言っぽいな。或いは単に言葉が足りない。
810 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:23:03 ] >>790 WiLiKiはだいたい見てるつもりだったけど気づいてなかった。 peg使ってみたかったけどコンパイルめんどいからリリース待ちだったので、 不意に動くバイナリが手に入って嬉しい。 ところでGaucheはもう完全にSubversionに移行してんの?
811 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:44:01 ] 言葉遊びなんかどうでもいいんだよ。 evalのお手本、誰か書いてよ。簡単そうに言ったんだら。 マジ、期待したのに。
812 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:30:25 ] evlis[m;a] = maplist[m; \[[j];eval[car[j];a]]]
813 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:31:12 ] evcon[c;a] = [null[c]->error[A3]; eval[caar[c];a]->eval[cadar[a];a]; T->evcon[cdr[c];a]]
814 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:32:21 ] apply[fn;args;a]=[ null[fn]->NIL; atom[fn]->[get[fn;EXPR]->apply[expr;args;a];
815 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:34:46 ] M式とはまた古風だな
816 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:41:34 ] evalくらいでエバらないでよね!
817 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:45:59 ] LISP 1.5 の論文の丸写しだなw
818 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:55:40 ] SchemeはS式で意味論が定義されていないのでLispではない、という話があったけど S式とM式を使うLispはLispではないの?
819 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:59:15 ] M式→S式は機械的に変換可能。単に表記の問題。
820 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:00:20 ] LISP 1.5 Programmer's manual の eval の定義は確か ] が一つ 足りないんだよね。丸写しするとアウトかな?
821 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:03:03 ] LISP 1.5 はM式で入力できるわけじゃないしね
822 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:08:30 ] >SchemeはS式で意味論が定義されていないのでLispではない、という話があったけど すごい燃料を投下する奴もいたもんだ(w どうなったのかな?
823 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:15:38 ] >>812-814 Schemeに翻訳キボンヌ
824 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:46:27 ] もったいぶった前口上はいいからw
825 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 07:52:08 ] >>822 古い話だよ。R6RSで解決。
826 名前:822 mailto:sage [2008/06/24(火) 08:00:17 ] >>825 サンクス! やっぱりR6RS読んでみるか・・・ でもこれ、俺には大仕事なんだよな〜 orz
827 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 10:08:52 ] つ「はてなようせい 意味論」でググれ
828 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:00:23 ] >>818 「S式で」どころか「意味が定義されてない」Lispが多い。 だから「S式で意味が定義されてない」とLispでないなら、 多くのLispはLispではない。
829 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:06:20 ] 形式的定義だけが定義じゃないけどな
830 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 16:23:55 ] 自分の手でSchemeを使ってevalが書けないのが明白になりつつあるなw
831 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:39:15 ] Schemeを使ってevalを書くのは容易 だけどどの程度ホスト処理系の機能を使う事が要求されているんですか? 特別式は使っていいんですか? (define (my-eval e env) (cond ((self-evaluate? e) e) ((symbol? e) (let ((x (assq e env))) (if x (car x) 'UNBOUND))) ((and (pair? e) (eq? (car e) 'if) (pair? (cdr e)) (pair? (cddr e)) (pair? (cdddr e)) (null? (cddddr e))) (if (my-eval (cadr e) env) (my-eval (caddr e) env) (my-eval (cadddr e) env))) ... )) みたいな程度でいいんですか?
832 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:39:50 ] typo (car x) -> (cdr x)
833 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 18:56:51 ] >>831 もともと>>782 の説明に使うevalが求められていたから、その違いを表面化させることが出来るならホスト処理系の機能を使う事が許されていると思う。
834 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:38:52 ] 機種依存無しで違いを表面化させて再現するevalを書くの大変そうだ。 >>831 期待してるよ。
835 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:46:25 ] 簡単だろ。 というかSICPの課題させようとしてるだろ? 大学の宿題か?
836 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:52:07 ] >>835 話しそらすの上手だね。 >>723 から始まったbeginのトップレベルの継続の違いを再現してみせる2種類のevalが本題。 別に宿題とか云う次元の話じゃない。逃げたきゃ逃げれば?どうせ匿名だし。
837 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:54:57 ] どうせ匿名なんだから構わなきゃいいのにw
838 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:29:22 ] >>835 はいい奴だと思う。 M式書き写してLISP 1.5のウンチクたれてる誰かさんより。
839 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 03:21:49 ] いい奴だが不要だ
840 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 04:35:41 ] >>836-837 結局、処理系のソースでも読んで君自身で作るしかないだろうな。 違いを再現するためにevalを作れという事は、 つまり「継続を含んだeval」が必要で、 そのevalと同位の継続もファーストクラスとして必要になる。 そうでないと組み込みbeginと構文唐beginの違いは多分理解できない。 ここの住人は冷めてるから、いくら喚き散らしても そこまで面倒な事をこの流れでやるわけがない。 ちなみに継続はSICPの範囲外だ。 がんばれ。
841 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 05:53:13 ] しょうがねえなあ、ちょっと書いてやるから後は考えろ。 (define (eval exp env cont) (cond ((number exp?) (cont exp)) ((symbol? exp) (eval-var exp env cont)) // ry (else (eval-list exp env (lambda (l) (apply (car l) (cdr l) cont))))))
842 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 06:04:33 ] on lispに
843 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:44:15 ] R5RSの解釈の問題なら、仕様書を読まずに解決することはあり得ないですね
844 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 08:41:26 ] (begin (define cc #f) (display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (display 'fuga) (cc 'moga)) が無限ループにならない実装はtop-levelのbeginだけ特別にスプライスして (eval '(define cc #f) (interaction-environment)) (eval '(display (call/cc (lambda (c) (set! cc c) (cc 'hoge)))) (interaction-environment)) (eval '(display 'fuga) (interaction-environment)) (eval '(cc 'moga) (interaction-environment)) とやっているからで、これはevalの実装というよりマクロの展開方法の違いと言える。 ちなみにR5RSは一塊でevalしてもスプライスしてevalしてもどっちでもよかったと思うけど。
845 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:34:35 ] >とやっているからで、これはevalの実装というよりマクロの展開方法の違いと言える。 >ちなみにR5RSは一塊でevalしてもスプライスしてevalしてもどっちでもよかったと思うけど。 これDrSchemeとか他の処理系を確認して書いた?
846 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:38:39 ] >というかSICPの課題させようとしてるだろ? >ちなみに継続はSICPの範囲外だ。 Seasoned Schemerには継続が出てくる。
847 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 15:09:03 ] R5RSの5.1節を 「beginで囲んでも囲まなくても意味が変わらない」 と解釈するならスプライスするべきです。 意味が変わるというなら、どう変わるのか明確にするべきです。
848 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 15:22:20 ] >>845 「処理系確認する」ってやり方で判定すると、 「どっちでもいい」個所がどんどん増えるだけだと思うが?
849 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:10:38 ] >>847 のように考えた人が作ったのでDrSchemeはあのように動作しているらしい。 それはここを見れば解るよ。 www.cs.brown.edu/pipermail/plt-scheme/2006-August/014277.html 明確な根拠が書かれていれば嬉しかったのだが・・・残念
850 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:27:08 ] >>848 かなり上のほうでGaucheとDrSchemeを比較してたから。 確認して書いてるなら話がつながるだろ?
851 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:42:05 ] >>847 > R5RSの5.1節を At the top level of a program (begin <form[1]> ...) is equivalent to the sequence of expressions, definitions, and syntax definitions that form the body of the begin.
852 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:27:47 ] >>851 >is equivalent to この文をどう解釈するか。 ひとつめは >「beginで囲んでも囲まなくても意味が変わらない」 という立場だ。 もうひとつは >意味が変わるというなら、どう変わるのか明確にするべきです。 という立場だ。Gaucheの挙動はこっちだった。 ここまでの流れ: Gaucheの挙動ってエラーじゃねえの?=>エラーじゃねえよ!=>ならeval書いて説明してみろよ=>evalなんて簡単。=>さっさと書け、ゴラァ! =>ほら書いてやったぞ=>それじゃ意味が明確になってねえぞ、ゴラァ!(今このへん)
853 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:33:04 ] >>852 > ならeval書いて説明してみろよ この馬鹿発言は無視すべき
854 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:39:07 ] eval書いて説明するような話じゃないよな
855 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:45:43 ] Gaucheの挙動ってバグじゃねえの? =>バグじゃねえよ! =>R5RSではトップレベルの実行はREPLの実行と区別されていないよ、R6RSではREPLが廃止されたけどね =>REPLってなーに? =>Read Eval Print Loop =>(define (eval e) e) =>S式の評価なのに値呼びpgr =>ならてめーが手本を見せてみろよ =>(マッカーシーの論文の丸写し) =>自分の手で書けねーのかよ =>evalなんて簡単。 =>さっさと書け、ゴラァ! =>ほら書いてやったぞ(<=今このへん) じゃない? 継続の底を説明する為にevalを書くって話は832で初めて出てきたような
856 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:49:29 ] (define (eval e) e) は近年まれに見る傑作だな。w
857 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 18:55:32 ] unicodeで書いたソースコードの改行が"\n"になってる処理系と"\n"(\は半角)になってる処理系があるんだな。 "\n"で改行しなくて驚いた。
858 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:15:04 ] >>856 (define (^-^)(print '許してやんなよ。))
859 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:16:26 ] >>855 これってアンチのネタだったのか・・・
860 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:17:52 ] >>858 (define (・x・) (print 'Bカップ))
861 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:18:53 ] >>855-856 がshiroさんのもうひとつの顔だったら怖い
862 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:30:21 ] いいこと思いついた おまえらちょっとeval書け
863 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:31:12 ] REPL「いいこと思いついた。おまえ俺の中でbeginしろ。」
864 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 02:02:39 ] >>858 , >>860 > (^-^) 許してやんなよ。 > (・x・) Bカップ エラー吐くかと思ったらw
865 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 02:24:42 ] (cut or <> <>) (fold or #f '(#f #f #t)) 怒られる なんで?
866 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 02:32:46 ] orがapply出来ないから。 (fold (lambda (x y) (or x y)) #f '(#f #f #t))
867 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 03:00:35 ] そうなのか… ちょっと明日R5RSとにらめっこしながら考えてみるわ 不便だなぁな気がする…
868 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 03:41:29 ] C言語に例えると式の中にif文混ぜるようなもの。
869 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 07:21:11 ] >>855 >S式の評価なのに値呼びpgr 値呼びは間違いではないし、pgrなんて誰も言ってないよ。 式を評価するタイミングを理解できない人が多いのは S式の見た目が単純すぎることと、評価の仕組みがわりと複雑なことのギャップが 驚き最小の原則に反しているんじゃないかな。
870 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 07:59:08 ] Gaucheでバグかなと思ったのあるけど聞ける雰囲気じゃないね Rubyより怖い
871 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:10:33 ] ああ、宗教的な何かがここに蔓延してることにしたいわけね。 大丈夫だよ。馬鹿は論理的に叩かれるけど、馬鹿じゃなければ叩かれない。 書いてみれば?
872 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:24:07 ] >>867 orが普通の関数だと、 ショートカットにならなくて、 それはそれで不便。 Schemeの特殊形式は 数が少ないから覚えられる。 覚えよう。
873 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:39:11 ] rubyってこわいの?
874 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:52:37 ] つ 落語&「rubyよりこわい」
875 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 09:13:10 ] >>870 別にネタや燃料の投下になってもいいじゃん!
876 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 12:41:57 ] バクだってあるさ にんげんだもの
877 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 16:18:00 ] ココのスレ見るとLisperさんが何をしてきてどう思われてるかが良くわかります。こういう印象です。 pc11.2ch.net/test/read.cgi/tech/1209441159/
878 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 16:20:40 ] 粘着、こっちまで遠征かよw
879 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 19:58:10 ] >>871 ほとんど名指しされてるw
880 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 06:31:04 ] >>870 WiLiKiに書いたら? ちゃんと対応されるみたいだし
881 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 06:44:49 ] Rubyをプログラミング言語の基準にやめろ あれはあれで特殊。 RubyとGaucheとMosh、みんな違ってみんないい
882 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 06:50:14 ] ジャパニーズでおk
883 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 08:34:34 ] >>882 I cannot understand your words. "It is k in Japanese" What meaning is it? Please write in English.
884 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 11:02:25 ] コピペか? ひっでえ英語w
885 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 13:07:52 ] >>884 偶然だぞ 何言いたいかと申しますと「ジャパニーズでおk」という日本語では、外人さんに伝わるものも伝わらないだろう、と言いたいわけです 日本語でやり取りしてるサイトなのだから外国人なぞ居ない、日本人しか居ないのだ、と思い込んでいませんか? 日本人がYoutubeを使っているように、外国人も2chを使っている可能性があるのではないのですか? 何故その可能性を排除しますか? 母国語ではない言語を使うことに苦労しながらも、それでも私達とコミュニケーションをとろうとしている(のかもしれない)人物に対して 「ジャパニーズでおk」という物言いをするのは良いことなのですか? コミュニケーションをとろうと努力している(のかもしれない)相手に対して、随分失礼な態度ではないのでしょうか それとも、そんな振舞いをするのが日本人なのですか? 相手にけして通じない言葉を使って悦に入る。それが日本人の性格なのですか? プログラミング言語のほとんどは日本以外の国で作られたものですから、日本人はその習得や理解に多少なりとも苦労しているはずです ドキュメントの大多数は英語文献で公開され、英語が不得意な日本人であれば読むのも一苦労でしょう そのような苦痛をこの板に集う人々は自ら日々感じていながら、何故相手に通じない日本語を使うのですか?
886 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 13:09:55 ] そして私は思いました >>881 が日本人なら、私こそが失礼なことを言っています…
887 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 13:28:06 ] 886は外人さんなのな 2chはある意味、かなり高度な日本語(スラング的な意味で)が要求されるから もっと慣れてから書き込むべきです。 このBBSで長文を書き込むことと、必死になることは推奨されていません。 そしておそらく881は日本人です
888 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 14:00:40 ] おまえらの人種が何なのかなんて興味無いよw
889 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 14:35:56 ] おまえらここは言い争いの場にやめろ
890 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 15:24:25 ] >>888 おまえの興味なんて興味無いよw
891 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 15:25:16 ] >>890 おまえの興味なんて興味無いよw 以下再帰的なので略
892 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 15:30:14 ] ここは酷い名無し再帰スレです。
893 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 16:54:30 ] >>892 Yコンビネータ乙
894 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:08:39 ] 不動点ですが何か?
895 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:15:23 ] >>894 894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39 不動点ですが何か?
896 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:18:32 ] >>895 895 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:15:23 >>894 894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39 不動点ですが何か?
897 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:19:16 ] >>896 896 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:18:32 >>895 895 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:15:23 >>894 894 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/27(金) 18:08:39 不動点ですが何か?
898 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 18:35:05 ] やめいw
899 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:05:20 ] 本当に再帰すんなw
900 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:15:21 ] ヌルポ
901 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:18:55 ] ガッ
902 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:26:11 ] 再帰を終わらせようと思ったのにガッされたお(´・ω・`)
903 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 19:48:48 ] >>902 つぎはcall/ccをかませよ。
904 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 20:46:10 ] pythonの内胞リストで感動してきた www.ibm.com/developerworks/jp/linux/library/l-prog3/ 要するにmapの拡張だと思うんだけどmapの拡張を柔軟にするって意味では lispのmacroも同じ? pythonの内胞リストと同じマクロって作れないの?
905 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:11:58 ] >>904 (use srfi-42)
906 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:13:46 ] リスト内包記法な
907 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:55:32 ] >>904 実用的なのは >>905 が書いてるsrfi-42だが、マクロでの実現法を 知りたいならここにあるlist-ofが参考になる。15行で内包表記を実現。 practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%9e%e3%82%af%e3%83%ad%e3%81%ae%e5%8a%b9%e7%94%a8#H-b9epxs
908 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 21:57:15 ] 内包表記は複雑。あんなものは内包がいい。
909 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:05:00 ] うまいこと言うなあ
910 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:17:56 ] 尊敬します!
911 名前:デフォルトの名無しさん [2008/06/27(金) 22:47:39 ] Lispに入門したいけどまだ戸惑ってる僕が質問します。 みなさんはLispを使って何をしていますか? ばかな質問だったら無視してください。
912 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:48:57 ] 仕事
913 名前:デフォルトの名無しさん [2008/06/27(金) 22:54:47 ] >>912 すごっ、どんな分野なんですか?
914 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:58:31 ] ふつーに、ちょっとしたデータを作ったり、ソースとかドキュメントを加工したりするのに使ってるよ。
915 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 22:59:50 ] 912ではないが 設定ファイルのインタプリタとか シェルみたいにインタラクティブに何か操作する言語を作るとか
916 名前:デフォルトの名無しさん [2008/06/27(金) 23:03:09 ] みんな実務に使ってるんですねぇ。 CG系の目的で使ってるひといませんか?
917 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:03:42 ] よほどのことが無いかぎり、プログラムは Lisp (私の場合はCommon Lisp)で書いている。 よほどのこと、というのは、 ・効率などをシビアに要求されて、他の言語でないとその要求を満たせない場合 ・他の言語を使えばおそろしく簡単に(たとえばライブラリを呼ぶだけ)済む場合 ・(顧客の指示など)社会的な理由でLispを使うことが許されない場合
918 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:04:32 ] >>916 レンダリング系は難しいかもしれないけど、モデリング系ではかなり使われてると思う
919 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:08:45 ] >>916 昔々Symbolicsというマシンがあってだなあ・・・ いや年寄りの独り言だ、忘れてくれ・・・ orz
920 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:10:04 ] 昔話禁止しようぜ
921 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:11:07 ] R5RSは忘れてR6RSにしようということですね。わかります。
922 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:16:24 ] >>916 例えばここ見てみるといいよ。 ttp://www.franz.com/success/customer_apps/animation_graphics/
923 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:45:50 ] R6RSも忘れてERR5RSにしようということですね、わかります >>911 あなたは両手を使って何をしていますか? (もし手の不自由な方だったら申し訳ありません。意味を汲み取ってください。)
924 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:51:55 ] >>923 > あなたは両手を使って何をしていますか? 自慰
925 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 23:56:14 ] >>924 片手でやれ
926 名前:デフォルトの名無しさん [2008/06/28(土) 01:19:54 ] >>923 すみません、意味を汲み取れませんでした。 今はタイピングしてますね。
927 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 01:32:39 ] 深い意味があるわけではありません。 なんか予想外の方向に展開してますが 日常生活の動作の多くに(無意識に)両手を使うように コンピュータを使う動作の多くに(無意識に、とまではまだ私はいきませんが)Lispを使うのです。 などと書きましたが未だに3分の1くらいはBシェルスクリプトにしてしまいます:-P
928 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 02:42:44 ] 春先辺りから変なのが常駐してるな。
929 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 03:09:44 ] だれかグレアムおじさんのArcを実装しようという方はおらんのかね
930 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 03:23:06 ] >>929 グレアムおじさん
931 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 10:53:38 ] >>916 ちょっと違うかもしれないけどこういうのもあるよ www.pawfal.org/fluxus/
932 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 14:58:24 ] >>916 gimpのscript-fu?
933 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 16:00:43 ] 行列計算とplot関係はpythonで pythonのメタ制御をlispでしたい しかし理想の環境はいまだできず
934 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:32:42 ] それLisp必要か?
935 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:36:23 ] それPython必要か?
936 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:43:54 ] 行列計算はどうなの?
937 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:57:20 ] Ypsilon Scheme System(イプシロン・スキーム・システム)はプログラミング言語Schemeの 最新規格R6RS*に準拠する実装です。インタープリタの特性を活かしてスピーディーで インタラクティブなアプリケーション/ユーザーライブラリーの開発を可能にします。また マルチコアCPU用に最適化したMostly Concurrent Garbage Collectionを実装することに より、極めて短いGC停止時間と並列実行によるパフォーマンスの向上を達成しています。 ttp://www.littlewingpinball.net/mediawiki-ja/index.php/Ypsilon_Scheme_System この会社のピンボールゲームとはMacでトリスタンやって以来の付き合いなわけだが、こう いう方向に来るとは思わなかった。
938 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 18:00:59 ] Python上で動くフルスペックのCommonLispとSchemeが欲しい。(CommonLithpとかThcheme?) OCaml上でも可。(OCSみたいなヤツ)
939 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 18:59:37 ] >>938 逆を作った方がいいだろうな。jpythonやiron pythonみたいにcl pythonかsbcl pythonでも 考えてみたいい。
940 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:05:16 ] PythonやOCamlが動く環境のほうが CLが動く環境よりも多いんですよ それにPythonやOCamlは処理系が統一されてるし
941 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:27:05 ] >>939 > 逆を作った方がいいだろうな。 > 考えてみたいい。 意味不明
942 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:56:15 ] >>938 せめてJavaがいいな schemeではありそうだけど
943 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:01:56 ] C/C++上で動くSchemeの何が気に入らないのかが不明だが 宗教上の理由かな
944 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:04:53 ] gaucheをxrea ・仮想環境にopenSUSE 10.3/11.0 i386版をインストール ・ディレクトリ /virtual/(xreaのあなたのID)/ を作る。 ・そのディレクトリの下に bin lib share ディレクトリを作る。 ・gaucheのソースを本家からダウンロード&展開 ・gauche-0.8.xxディレクトリに移動 ・./configure --prefix=/virtual/(xreaのあなたのID)/ ・make ・make install ・/virtual/(xreaのあなたのID)/に移動 ・ tar cjvf gauche.tar.bz2 bin lib share ・ gauche.tar.bz2 を xrea に持っていく。 ・ sshでxreaにつなぐ ・ そこで tar xjvf gauche.tar.bz2 とする。 おしまい。openSUSEにはyastからautomake autoconf など開発系のパッケージを入れること。
945 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:08:09 ] >>944 しまった、誤爆です。でもここでもいいか。
946 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:08:10 ] Python上であればPythonから簡単に呼べるという幻想でしょ。 たぶん性能が悪くて使い物にならないと思うけど。 どうせやるなら Java VM か .NET CLR 上が面白いだろうね。
947 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:19:03 ] >>943 C/C++ではGUIの仕様の統一が図れないしi386やLinux/Winのみをターゲットにしている事も多い。 JAVAは純正はポータブルじゃないしクローンは(よくなったとはいえ)まだ不完全。 PythonやOCamlは派生処理系はあるもののメインに概ね統一されてるしポータビリティもいいしGUIもある。 という理由です。 FiclやLuaみたいにANSI-Cが必要十分条件なCL or Schemeがあればそれが一番いいんですが。 (といってもGUIの問題が残るけど)
948 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:25:10 ] 要はgccとPOSIXとXがある環境ではどこでも動いてよ!ってことです。
949 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:25:51 ] gcl がそれに近いかなあ
950 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:32:05 ] GCLはソースが古すぎてビルドできませんでした(古い関数が使われている?) その末裔のECLはBoehmGCをportしたらビルドできましたけど
951 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:35:57 ] どっちにしても Python 上に作ってもまともな性能なんて出ないよ
952 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:39:54 ] Python上に作るっていうか JavaVMにおけるKAWAとかSISCみたく PythonVM上で直接実行されるようにすれば CLispくらいにはなりませんかね?
953 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 20:54:24 ] >>947 ocamlやpython,rubyのGUIって標準はtcl/tkちゃうん? clはltkが一応あるよ。
954 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 22:03:04 ] >>947 PythonやLuaの実装言語はCなんだから、 CでGUIを統一できないとか移植性がないとか言うのはおかしいでしょ
955 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 22:42:58 ] PythonやLuaやRubyは言語≒実装なので事実上の標準という縛りがあるから その上で動くもののポータビリティが保たれることを利用して SchemeやCLよりも低レベルでポータビリティを実現して欲しいんです。 いろいろな処理系を移植するのは骨が折れるので。 LuaにGUIがあるのかどうかは知りませんが 必要十分条件が明白な言語の代表として名前をあげました。 POSIXでXlibとgccがあればフル機能は無理でも標準機能はビルドできる、くらいの条件があって欲しいです。
956 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 22:47:32 ] 欲しいものはよく判った。でも今のところ無いと思う。 性能が出なくて労力の割に面白くないから、誰も作らないんじゃないかと想像できる。 だが、やってみなくちゃ判らないぞ。>>955 の偉業に期待だ。
957 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 23:06:28 ] >>955 ansiなscheme or CLにTcl/Tkをポートする方が楽そう。
958 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 23:30:13 ] GUI込みならPythonアプリはそれほどポータブルではない。
959 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:08:49 ] >>955 LuaにGUIはないが、君の言う通り「Luaよりも低レベルで」ポータビリティを実現できる Cで書ける部分を無理にLuaで書くことはない
960 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:30:30 ] >>955 Python上で実装してポータビリティを上げるって 衝撃の馬鹿理由だな。
961 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 00:49:27 ] ポータビリティとライブラリを重視するのは良いと思う 性能重視は競争が激しいし供給過剰だし
962 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 01:03:14 ] もうすぐ次スレだな
963 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 01:15:09 ] ypsilon vs gauche
964 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 04:50:03 ] pythonはポータブルじゃないよ 日本じゃ人気がないから
965 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 07:10:54 ] おれは最近、仕事でpythonばっかり書いてるよ。 時々lispとの微妙な違いに悲しくなるけど、確かにlisperとしても許容できる、 良い言語だわ。ほぼどこでも動くし、ライブラリも沢山。 そのうち趣味でもpythonばかりになるかも。
966 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 08:39:27 ] ANSI-Cが必要十分条件だとGC書けねーよ
967 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 09:28:25 ] >>933-935 matlabに慣れてるからpython.numpyが使いやすい しかしちょっと高度なこともしてみたい 全部lispでやったほうがいいのだろうか
968 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 09:28:57 ] >>938-939 pyffi
969 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 09:57:24 ] >>967 あまり融合度が高くないが、 clisp.cons.org/impnotes/matlab.html matlabじゃないが、 nlisp.info/
970 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 13:08:28 ] ピンボールの話題がまだ出ていない件
971 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 13:09:16 ] ごめん。>>963 見落とした
972 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 14:30:26 ] 「事実上の標準」はTck/TkでもXlibでもなくGLUTというオチ
973 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 16:42:13 ] >>970 ピンボールよりメタボールの方が面白そうだなあ
974 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 22:21:52 ] evalでschemeが評価できるpythonとか逆にschemeでpythonが評価できるとか
975 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 22:32:26 ] データの互換性があると使いやすいのだろうが、LispのconsセルとPythonのtupleには 微妙な違いがあったり、symbolに相当するものが無かったり、PythonってLispのようで Lispでないって感じだよね。
976 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 17:33:24 ] うわさのypsilonをコンパイルしようとしたらエラーで止まっちゃったわ。 x86_64に対応してないって書いてたわ。残念。
977 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 21:52:16 ] Scheme on Java > SISC 継続不完全でもJavaとのリンク強ならKawa
978 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 18:34:57 ] まず考えるべきことは、なぜC/C++とのリンクが弱い (と思われている) かだ
979 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:45:38 ] >>976 32bitでコンパイルすればいいじゃん。