1 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 17:58:58.06 ] Common Lisp、SchemeをはじめとするLisp族全般のスレです ■前スレ Lisp Scheme Part32 hibari.2ch.net/test/read.cgi/tech/1303299696/ ■テンプレ wiki.fdiary.net/lisp/ ■関連スレ 【入門】Common Lisp その8【質問よろず】 hibari.2ch.net/test/read.cgi/tech/1309940115/
2 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 18:00:51.76 ] >>1 おつおつ
3 名前:デフォルトの名無しさん mailto:sage [2011/10/09(日) 23:25:08.72 ] >>984 前スレ > おれquicklispには非常に期待してるんだ。ネイティブコンパイラのある言語で、 > ああいうライブラリ管理がある言語って、実は少ないんじゃないかしら。 どういうこと? 機能としてのadsfとの違いがわからない。 quicklispの方がインストールできる率が高いぐらいの認識だわ。 Linuxディストリのパッケージ管理ソフトのapt系やyum系やemerge系やArchLinuxのpacman(yaourt)系みたいなことってadsfでできないの? Perlとかはどうなん?
4 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/10(月) 00:05:26.51 ] システムがどうこうよりも結局はリポジトリのメンテナンスにどれだけ手間をかけれられるかって話だよね。 Scheme だと home.gna.org/dorodango/ snow.iro.umontreal.ca/ あたりがそれなりに使えるかな。 使ったこと無いけど。 Checken Scheme だけの話なら egg があるし。 wiki.call-cc.org/chicken-projects/egg-index-4.html そういや higepon 氏の言ってた SPON ってどうなったんだろ。 wiki.monaos.org/pukiwiki.php?R6RS%2F%BD%B8%C0%D1%BD%EA%2F%A5%A2%A5%A4%A5%C7%A5%A2
5 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 02:09:04.89 ] >>3 パッケージ管理で気に入ってるのはLeiningenのclojarsリポジトリかな もの凄く楽
6 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 09:14:13.99 ] >>3 quicklispは依存するライブラリをリポジトリからネットワーク経由して勝手に取ってくるよ。 (要はyumとかaptみたいに) asdfってそんなことできたっけ?
7 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 12:57:52.63 ] >>6 それはさすがにできる。 検索機能があったかは、ようわからん。 というか、他の仕事でSBCLを触れていなくて、どんどん忘れていく。 作りたいもの、いっぱいあるのになあ。
8 名前:デフォルトの名無しさん mailto:sage [2011/10/10(月) 14:54:53.33 ] Clojureだけど、仕事で使える自分は幸せなんだなぁ
9 名前:デフォルトの名無しさん mailto:sage [2011/10/11(火) 19:33:47.11 ] Common Lisp では型宣言出来るみたいだけど、Scheme で型宣言出来るような方言ある?
10 名前:デフォルトの名無しさん mailto:sage [2011/10/11(火) 19:45:32.63 ] Chickenならforeign-lambdaの戻り値に型指定が必要だから似たようなことができる
11 名前:デフォルトの名無しさん mailto:sage [2011/10/11(火) 20:36:23.21 ] Typed Scheme なんてのも
12 名前:デフォルトの名無しさん mailto:sage [2011/10/11(火) 20:49:06.85 ] >>11 今は Typed Racket になってるみたいだな。 docs.racket-lang.org/ts-guide/index.html Racket は敬遠してたけど、ちょっと手を出してみる。
13 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 01:35:30.13 ] >>9 KawaいいよKawa
14 名前:デフォルトの名無しさん mailto:sage [2011/10/12(水) 01:58:11.38 ] >>12 へー、Type Inference(型推論)がある。暗黙変換あるのかな。
15 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 19:12:51.52 ] 関数の返値を (list a b) でなくて (values a b) にした方が便利な場合ってのが重いつかない values って何のためにあるの?
16 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 19:20:18.20 ] >>15 practical-scheme.net/wiliki/wiliki.cgi?Scheme%3A%E5%A4%9A%E5%80%A4
17 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 19:32:10.44 ] >>15 卑近な例だと整数の除算とかだと便利 CLだとtruncate
18 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 19:40:14.29 ] >15 ハッシュを扱った例を調べてみな。nilがデータ内のnilかデータ内で無いことを 返すためのnilかで使われとる。 たちを扱えるようになってきたら初級から脱却ぢょ。
19 名前:デフォルトの名無しさん mailto:sage [2011/10/14(金) 21:41:44.00 ] 動的言語の最適化がしにくい関係で使うものっぽい?
20 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 00:32:43.06 ] ほとんどのコンパイラはvaluesの結果をリストにせずスタックに積んで返すだけ。 だから明示的にリストにして返すよりメモリ消費が少ない。 だからリフティングにも便利。
21 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 02:13:36.59 ] >>7 ちょっと遅い反応だけど。 多分、ASDF-Installと混同してる。ASDFはファイル間での依存関係を定義したり、 ロードやコンパイルの手順を統一するための枠組み。makeとかに該当する。 そのASDFの枠組みに乗っかって、ライブラリの導入を自動化するのが、 ASDF-InstallやQuicklisp。こちらはCPANやRubyGemsとかと同じ層の枠組み。 ライブラリの自動ダウンロードや検索をするのはこっち。
22 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 03:01:38.28 ] >>15 性能が必要なとき、コンシングを避けるために使える。 >>16 のリンク先にもあるけど、意味論上の理由を無視すれば、 単に性能への要求が全て。同じことは大体はリストでもできる。 Schemeでの(values)とかの例外を除いて。 多値にあまり必要性を感じない人は結構いて、Gerald Jay Sussmanなんかは ttp://trac.sacrideo.us/wg/wiki/WG1Ballot1Results > It is important to allow multiple values that can result in multiple definitions > and assignments, but it is not apparent to me why we need a special data > type to implement them. って言ってる。
23 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 03:43:18.97 ] 普通に考えれば構造体でも定義して返せばいいわけだし、 わざわざ特殊なものを積極的に使う理由にはならないなあ >>18 の例にしてもnilと区別したいならノードを返すとか他にいくらでも方法はあるわけで
24 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 05:45:53.17 ] >>23 何かにラップして返すと、受ける側でアンラップしなきゃならん。 変数に束縛する場合はdestructuring-bindとかパターンマッチが使えるが、 最初の値だけそのまま他の関数に渡したい場合などは一手間余分にかかるし。 それから、APIの互換性を保ったまま後付けで余分な値を返すようにできるのは 仕事でコード書いてると重宝する。単独の値→構造体へと戻り値を変更したら 呼び出してるところ変えて回らないとならないからなあ。 Schemeの多値は二番目以降の値を無視するような使い方ができないので 性能上の要求以外で使うメリットはあまり感じないが。
25 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 08:20:06.53 ] CLの多値は使わない分を捨てられたり、足らない分をnilで補ってくれて嬉しいんだけど、 たまに、一部の値を返し忘れてるのをnilにされちゃって、バグの原因に気付けずに頭がおかしくなって死ぬ。
26 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 10:18:16.19 ] >>23 特殊かなぁ? 謎だ。Haskellのように、Maybe/Eitherを定義すればできるけど
27 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 11:11:16.05 ] >>23 「わざわざ××でなくても○○でいい」という主張は説得力に欠けると思う。 ××と○○のどちらに重みを置くかで簡単に逆転するもの。 実際、「わざわざ多値でなくても構造体でいい」という主張に対して >>24 は「わざわざ構造体を使うより多値」って反論だろう。 だけどこの反論は「手間」に焦点をあてて重みを具体的に主張してるのでそれなりに説得力がある。 こういうときには構造体の方が手間が小さいとか、こういうときは手間をかけてもなお構造体の方がいいとか、 「多値を使う理由がない」よりも「構造体を使う理由がある」で主張してくれた方が良い議論になりそうな気がする。
28 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 14:27:36.16 ] じゃ言うけど、 多値で返す値は順番に依存してるのが良くないんだよ 構造体は名前を使えるぶん間違いが少ないし順序を変えたりするのも楽 それとSchemeで性能とか言われても説得力がない 構造体返しても最適化のレヴェルはほぼ同じだし どうすかね
29 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 15:59:30.79 ] 下らねえ。
30 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 17:11:17.71 ] ↑そういう応えしか返ってこないんなら反論無しと受け取るよ 構造体はそれ1つを知ってればいいが、 多値は関数それぞれが何を返すのか知ってないといけないのに加えて、 その順番には何の根拠もないから仕様変更に弱い 後で何か付け足す場合とか考えないのかな? 普通に考えれば積極的に使う物ではないという判断に至ると思う
31 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 17:15:52.57 ] だから多値を推すなら名前付きにしろって思うんだよ 関数引数にも言える事だけど
32 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 17:21:13.23 ] まあ、関数の引数が見逃されてきたのは、 呼び出し側のインターフェースで引数を強制してるからだけどね 可変長引数の使いにくさを見れば多値がいかに迂闊なインターフェースか判ると思う
33 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 17:46:07.45 ] 多値のせいで例外処理みたいなすっ飛んでく処理とか複雑になってしまわない? 例外受け取っても何が入ってるか判らんとか R6RS以降追ってないけど
34 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 17:46:34.57 ] 順番に依存よくないな!Scheme みたいな狭い世界じゃなくて、 数学の世界を名前付き引数に改革しようぜ!
35 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 18:01:15.40 ] (set! result (lambda() (values 1 2 3))) result => 1 (ref-values result 0) => 1 (ref-values result 1) => 2 (ref-values result 2) => 3 とかw 嫌んなっちゃうな
36 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 18:03:24.20 ] おっと、括弧が1たりないw
37 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 18:06:35.96 ] つまり多値がファーストクラスでないのがいけねえんだってことね
38 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 18:50:21.53 ] >>35 何でdestructuringするマクロ使わんのだ。 単にreceiveとかcall-with-valuesの下でリストやベクタ、 構造体を使えば良いだけで、他からは隠蔽できる。 この辺の話は全部>>16 と参照元に書いてるよ。
39 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 19:18:18.53 ] >>28 「Schemeで性能と言っても説得力がない」と言われちゃうと Schemeで準リアルタイムシステム書いてる自分の立つ瀬がないんだが。 構造体を作って返すと、最適化でアロケーションを消してもらうのは大変で、 Stalinみたいに全プログラム解析をやるハメになる。多値なら アロケーションが起きないことが(使ってる処理系で)保証される。 最近GCの性能は上がってるとはいえ、no consingで書くのはバカにならないよ。 そんなコードをSchemeでわざわざ書くな、と言われたらサーセンとしか言えないが。
40 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 19:22:02.14 ] >>28 >>30 Schemeでの性能の話に説得力がないとか言われてもなー。 現実で業務とかに使ってる人もいるし、StalinとかはCLの処理系と戦えると思うけど。 それと、構造体を現状の多値の代わりに、というのは色々問題出ると思う。 少なくとも、返す側の関数単体じゃそれが多値の代用として使われるかどうか判断できないから、 Lisp語族で当たり前に行われる、インタラクティブにコンパイルする場合、最適化できないよね? この辺は自分は詳しくはないので、解決する方法はあるのかもしれないけど。 現実的な(将来コンパイラが十分に賢くなったら、とかでなく)範囲であるなら教えて欲しい。
41 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 19:32:30.73 ] 被ったw あと、要素の追加や削除が将来的に起きそうな場所を抽象化するのは当然で、 どこで多値を使うかはケースバイケースだと思う。>>30 は極論に見える。 関数の引数と同じで、固定できる部分は複数の値で、他は抽象化されたものを。 そんなにおかしい話かな?
42 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 19:58:36.30 ] すっごく素朴な疑問で悪いんだが、多値で使われなかった値って、 そのうちGCされる、って理解で正しい?
43 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 20:01:41.48 ] >>42 CLの場合だとスタックに戻されるような実装(コンパイラ)が多数を占めてるからGC対象ですらない。
44 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 21:12:49.10 ] 値渡ししかできないわけじゃないんだし 効率重視なら多値なんて使わない方がいいけどな
45 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 21:18:53.43 ] 関数から戻るたびにmake-*するよりはましかと。
46 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 21:37:39.88 ] 副作用を使っちゃうと、状態を変更する関数を呼んだ後に以前の状態を必要とする可能性がある場合、 オブジェクトをコピーしないといけないから、副作用を伴わない多値のが効率が良いこともあると思うよ。
47 名前:デフォルトの名無しさん mailto:sage [2011/10/15(土) 21:42:48.51 ] 多値についてたちが悪い議論はもうやめようよ。
48 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 02:23:55.43 ] call/ccで単純に関数の中途で大域脱出し、 デバッグ用途(イミディエイト機能のような)に使いたいのですが、 例を教えていただけませんか。 いまいちcall/ccを使うタイミングがわからないのです
49 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 08:48:09.05 ] >>48 イミディエイト機能って何? ググってもわからなんだ。 Chez Scheme とかではエラーのときにデバッグモードになるけど、あんな感じのこと? 汎用的に作るのは難しいか出来ないと思うけど、とりあえず使用例みたいなので目的とするところを示してくれんか。
50 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 11:24:47.21 ] >>49 ベクターを操作する巨大な関数です。 一ループごとに文字列を読み込み、見合った操作をして文字列の先頭を削り再帰します。 (define interprit (lambda (program memory offset) (cond ((eqv? programの先頭 #\a) 処理) ... ) ;*ここで脱出* (interprit 削ったprogram memory offset) ) ) ループする毎に継続をset!して脱出し、 処理を確認したら戻りたいです
51 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 12:18:26.79 ] >>50 「処理を確認」をもう少し詳しく。 なんとなく、ブレークポイントを設定してローカルな変数を見たいのかな、 とか思うんだけど、どうなんだろう。
52 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 13:40:15.08 ] >>51 大域変数を確認したいです。
53 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 14:31:14.00 ] 最初はcondないの内部処理は、各条件ごとの内容をそれそれ別関数にまとめて 作って、ひとつの関数から、cond条件わけの関数とそれぞれの関数に分けて作った ほうが最初はいいよ。そのほうが読みやすくなるので。 何もかも一つでやらそうとするのはあまりいい傾向だとは思えない。
54 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/16(日) 15:49:08.11 ] >>50 その処理を一般化すると「ループからジェネレータへの変換」と考えられる。 これがそのまま使えると思う。 practical-scheme.net/wiliki/wiliki.cgi?Scheme%3agenerator%E3%81%A8do%E3%81%A8while#H-3put3dsr6wpqj call/cc を使う典型的な例なので call/cc の解説の中では似たようなコードはよくある。 限定継続を提供している処理系ならともっと簡単に書ける。 practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%E9%83%A8%E5%88%86%E7%B6%99%E7%B6%9A%3a%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E5%8F%8D%E8%BB%A2 そういや限定継続って規格に入ってないし、 srfi にもなってないっぽいなぁ。 racket には shit と reset だけじゃなくていくつかのバリエーションがあるみたいだね。
55 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 22:34:38.91 ] >>53-54 くわしくありがとうございました。
56 名前:デフォルトの名無しさん mailto:sage [2011/10/16(日) 23:05:42.50 ] 余談ではありますが、 call/ccとdelayを用いてpromiseを返却し、逐一動作が出来ました。
57 名前:デフォルトの名無しさん mailto:sage [2011/10/17(月) 01:32:57.33 ] gambitcやchikenでvalues使うと大幅に速度が上がるっていうなら できるだけ使うように心がけるかな
58 名前:デフォルトの名無しさん mailto:sage [2011/10/18(火) 11:18:56.17 ] >>54 糞コテは巣に帰れ
59 名前:デフォルトの名無しさん mailto:sage [2011/10/18(火) 17:32:08.25 ] >>58 SCHEME餃子の巣はやっぱSchemeスレなんじゃね?
60 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 09:16:03.19 ] shibuya.lisp はどーだった?
61 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 10:59:49.40 ] クロージャスレから引越しというか。 授業が奥乃先生と複数担当態勢だったりしたのは引き継ぎの目的もあったのかな。 最終講義のアナウンスがあるとしたら年明けかな?
62 名前:デフォルトの名無しさん [2011/10/23(日) 11:51:45.52 ] >>60 Shibuya.lisp TT#7の動画をニコニコ動画とYouTubeにアップしました。 www.nicovideo.jp/mylist/28336529 www.youtube.com/playlist?list=PLEAB9C327450DA7D3
63 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 14:03:45.42 ] 某氏と某氏のトラブルも収まったのかな。 Shibuyaでは喋らんと言ってたけど 良かったんじゃない?
64 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 15:11:06.90 ] 一応当時、熱くなって申し訳ない、みたいな感じで本人謝罪してたよ。 あとは、相手もう運営側から手を引いてるし。 何にせよ、また出てくれたのは良かったね。
65 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 19:34:34.03 ] >>62 ひげぽん氏の声はよく聞こえて良い。 滑舌が悪い人や、集音がイマイチなときがあったりするのはなんとかならんかな。 マイクゲインも大きすぎると雑音も拾うから骨伝導タイプのマイクを使うとか。 それと、映像はもう直接PCに繋げちゃってもいいような気がする。
66 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 21:16:06.97 ] でかい会場のスクリーンでは見えるけど、中継では見づらい、という場面で ズームしたり、身振りが入った説明をしてるのでカメラを振ったり、という時に 中継担当者の手間が増えるので、そのへんは微妙かも。
67 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 23:00:51.42 ] >>66 多くは発表資料も公開してるからそっち見ながらでだいたい問題ないかもな。
68 名前:デフォルトの名無しさん mailto:sage [2011/10/23(日) 23:25:29.76 ] これだけ後からスライドの画像を入れてるけど、こういうのはやっぱ結構手間かかるのかな。 www.nicovideo.jp/watch/sm5008319 見易さ的には好ましいとは思うけど、 資料見ながら聞けば済む話ではあるからそこまでするほどのもんでもないって言えばそうだしなぁ。
69 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 01:45:38.40 ] なあ、Monaの開発は順調さ build5 hibari.2ch.net/test/read.cgi/os/1314741952/
70 名前:デフォルトの名無しさん [2011/10/24(月) 06:22:17.84 ] スライド画像で差し替えるのは、ページ送りをプレゼン時と同じタイミングにするのが結構難しいです。 元映像見ながらだとなんか微妙にずれるので、わずかに入っているスペースキーを叩く音とかを手がかりにしてました。 あと、音声についてはいつも悩ましくて、人により声質やマイクの持ち方が違うのでなかなか安定しません。 あまりに聞き取りづらいのは、編集時にボリューム変えてますけど、あまりやり過ぎると雑音まみれの変な音になるので悩ましいところです。 発表者の机の上にボイスレコーダを置いておいて、あとから合成するのがいいと思うけど、これもマーカーみたいなのがないと合わせるのがちょっと難しかったり。
71 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 08:23:17.05 ] UST中継では入力オーバーっぽいノイズ入ったりしてたよね。
72 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 08:41:33.58 ] 音割れしてるのがひとつあって、体調も悪かったからそのまま切っちゃったんだけど、 あれは音量の調整のミスなのか、発表者の声が大きすぎたのか。 さておき、いつも動画アップロードお疲れ様です。
73 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 10:02:52.03 ] ヘッドセットやピンマイクで強制するとか? いや、そういう面倒な事こそLISPを活用してだな
74 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 10:23:17.45 ] どう頑張ろうと声の大きさを一定にすることは無理でしょ。声出してるのが プロのアナウンサーとかじゃないんだから。 最初のAD変換で音が割れたりしてたらリカバリーのしようがないので、 そこの機材で入力レベルの調整をすればいいんだけども。
75 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 11:01:09.37 ] ・マイクを違う距離に数台用意してマルチトラック録音して後で選別する ・音圧拾ってレールかなんかで距離を自動調節する装置を作る
76 名前:デフォルトの名無しさん mailto:sage [2011/10/24(月) 14:07:01.53 ] PCMレコーダーに自動レベル調整機能が付いてるものがあるようだけど、 PCだと難しいんかな?
77 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 00:08:48.51 ] 細かいこと気にすんなよ 音割れしてたら見るのやめる程度の内容なんだから
78 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 06:29:44.08 ] RIP
79 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 06:45:30.26 ] ご冥福を祈ります。
80 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 07:57:08.33 ] ジョブス、リッチーに続いてマッカーシーまでもか。 R.I.P.
81 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 08:07:00.76 ] ttp://jp.techcrunch.com/archives/20111024creator-of-lisp-john-mccarthy-dead-at-84/ えええええ
82 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 08:19:07.05 ] こんどはマッカーシーが天寿を全うしたのか。 RIP
83 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 13:07:35.50 ] >>77 発 者 同 . 。_ ____ 争 生 同 .じ . /´ | (ゝ___) い .し 士 .レ .__/'r-┴<ゝi,,ノ ro、 は、 .な で .ベ ∠ゝ (ゝ.//` ./`| }⌒j .い し .ル } ⌒ /`ヽ、_∠l,ノ ・ヽ´ .! ! か の / ´..:.} >、、___, .r、 ソ、`\ / ..:.:.} / |∨ ` ̄ / ..:.:./ | 丶 / _、 ..:.:.:.{ .{.:.:. \ { ..:Y .ゝ、 {.:.:.:.:. ヽ |、 ..:/ 丿 .:〉 >.- ⌒ . ヽ / {. ..:./ ソ ..:./ .( ..:.:.:` ..:} ./..:.:}.:.:./ ヘ、 ..:./ .\ ..:.:r_,ノ、.:.:} ./..:.:/|.:/ {.:./ X.:.:}.} X X /..:.:/ .}.:| }:/ .Y丶ヽ Y.:Y . __/.:/ { } 《.〈、 _,,__>.:》丶 Y.:\ /.:.:.:.:.::/ !.:.:ゝ ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ \.: ̄>
84 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 13:30:32.58 ] あびしーえる1.0リリースだって abcl-dev.blogspot.com/2011/10/abcl-100-released.html
85 名前:デフォルトの名無しさん mailto:sage [2011/10/25(火) 13:32:20.92 ] hatsukari.2ch.net/test/read.cgi/news/1319513713/ ν速にはスレが立った。マ板はまだだが。
86 名前:デフォルトの名無しさん mailto:sage [2011/10/26(水) 23:40:12.57 ] 某声優ユニットの方も7月で活動終わってた QEPD
87 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 12:46:50.75 ] toki.2ch.net/test/read.cgi/scienceplus/1319679294/
88 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 22:21:58.66 ] GCもマッカーシー由来だったの
89 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 22:30:15.52 ] (define (f x) (define-macro (bl) '(if (> x 0 ) #t #f)) (bl) ) (f 10) racketでは動くけど、他の処理系ではやっちゃいけない?
90 名前:デフォルトの名無しさん mailto:sage [2011/10/29(土) 22:34:59.75 ] そもそもdefine-macro自体がRnRSにないので、 あんま気にしても仕方ないと思う。
91 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/30(日) 00:28:17.17 ] define-macro は RnRS で提供して無いけど、 R6RS では簡単に define-macro を実装できる。 典型的な実装例はこんな感じ。 (define-syntax define-macro (lambda (stx) (syntax-case stx () ((_ (macro . args) body) #'(define-macro macro (lambda args body))) ((_ macro transformer) #'(define-syntax macro (lambda(stx2) (syntax-case stx2 () ((k args (... ...)) (let ((v (syntax->datum #'(args (... ...))))) (datum->syntax #'k (apply transformer v))))))))))) これなら >>89 のようなことは問題なく出来る。 でもまぁ Scheme 的には let-syntax を使う方が楽ではあるだろうね。
92 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 00:29:23.88 ] なんだよボーイズラブって
93 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 03:34:57.41 ] 限定継続使われてないからメモリーリークしてたんかね groups.google.com/group/plt-scheme/browse_thread/thread/a310b7cba8fae651/fa85558e8a5115bf
94 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 05:02:08.64 ] じゃあこんなのも問題ないのね でも `[`(,,op ,'y) あたりがうまく動いてくれない (define (g x) (define-macro (tmpl op) `[`(,,op ,'y) (list y ,op)]) (match x [`(- ,z) (list z '-)] (tmpl '+) ) )
95 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 12:47:34.04 ] >>91 各処理系がdefine-macroをどう実装してるかが問題なんだから、 RnRSでdefine-macroをどう実装するかはこの場合関係ないだろ。 独自の定義でオリジナルを上書きして差異を吸収するってんなら別だけど。
96 名前:94 mailto:sage [2011/10/30(日) 13:34:27.93 ] 結局、期待通りに動きませんでした。何がいけないのかよくわからない。 (define-syntax tmpl (syntax-rules () ((_ op) [(list op y) (list y op)]))) (define (g x) (match x [`(- ,z) (list z '-)] [(list '/ z) (list z '/)] (tmpl '+) [_ 'else] ) ) (g '(/ 8)) (g '(+ 10)) (g '(- 12)) (g '(= 19))
97 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 14:12:11.24 ] 何を期待してるのか判らんから助言しようもないが、 matchの仕様を見るにpat部分は普通の評価はされない場所だから 何か勘違いしてるんだろ。例えばパターンの最初の2行は [(- z) (list z '-)] [(/ z) (list z '/)] でいいんじゃないかと。 tmplもそう書き直せば多分動くでしょ。 全く確認してないが。
98 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 14:13:55.83 ] あ、だからpat部分は評価されないからダメだよ 出てくるシンボルは「パターン変数」になるそうだから。仕様よく読め。
99 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 18:50:28.04 ] おまいらそんなに括弧が好きなの? かっこつけんなよ。
100 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/30(日) 20:16:14.53 ] >>99 そのダジャレは面白いと思って書いてんの? 煽りだろうがあえてマジレスすると、括弧そのものではなくてマクロが重要だろ。 Lisp 風のマクロを実現するためにS式表記が相性が良かったからこの表記が維持されてるってだけ。 外観ではS式の優位性ってのはそれほど無いんじゃないか? 例えば Python で構文木を操作しようと (マクロ的なことをしようと) した場合のめんどくささはこれを見ればよくわかる。 www.unixuser.org/~euske/doc/python/python-lisp-j.html#macros マクロが要らないならプログラマが直接S式で書く意味はあんまり無いと思う。 見難いと感じないならデメリットも特に無いとは思うけど。
101 名前:デフォルトの名無しさん mailto:sage [2011/10/30(日) 21:23:48.25 ] templated match macroとか作ったら論文になるんだろうか どんな雑誌に投稿するのか知らないけど
102 名前:SCHEME餃子 ◆8X2XSCHEME mailto:sage [2011/10/30(日) 23:31:17.46 ] ずいぶん前の話だけど、 Active Basic スレで正規表現ベースの構文定義を提案してた奴がいたなぁ。 あんまりフリーダムでも困るけど、 Lisp の場合は結局はS式だから、それがちょうどいい枷にもなってる気がする。