1 名前:デフォルトの名無しさん mailto:sage [04/08/02 23:13] 過去スレ Part1: piza2.2ch.net/tech/kako/987/987169286.html Part2: pc.2ch.net/tech/kako/1002/10025/1002584344.html Part3: pc.2ch.net/tech/kako/1008/10082/1008220265.html Part4: pc.2ch.net/tech/kako/1016/10162/1016211619.html Part5: pc3.2ch.net/tech/kako/1023/10230/1023091882.html Part6: pc3.2ch.net/tech/kako/1031/10315/1031560687.html Part7: ruku.qp.tc/dat2ch/0311/20/1042167213.html Part8: pc2.2ch.net/tech/kako/1058/10582/1058263391.html Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/ Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/ 関連リンクは>>2-10 あたり
560 名前:デフォルトの名無しさん mailto:sage [04/10/01 21:08:47] 某国の場合 Pascal→Delphiみたいな名前置換があるやも いやむしろナイスな銘々してくれって感じ? オタ向け言語から一気に若者の主流に返り咲くか? そういやcurlてどうよ? 本見た感じでは、うーん・・・
561 名前:デフォルトの名無しさん mailto:sage [04/10/01 21:20:45] なんか短期間で書き込んでる変な人がいますね。
562 名前:デフォルトの名無しさん mailto:sage [04/10/01 22:44:05] ACL Professionalの個人向け2年間$599リースは日本でもやってんの? 間に挟まってるぼったくり屋さんが黙って無さそうなんだけど。 AllegroPrologは7で入るんだっけ?それとも別製品か?作ってるのは知ってるけど どんな製品ラインナップになるのかまでは知らん。
563 名前:デフォルトの名無しさん mailto:sage [04/10/02 00:01:18] CLHS は float に inf や NaN を求めていないんですね. これらが無いと困りませんか? 近日規格策定予定だったりしますか?
564 名前:563 mailto:sage [04/10/02 00:04:09] おっと,clisp の impnotes で触れられているのをまだ見てなかった.スマソ。
565 名前:ミミ mailto:sage [04/10/02 02:06:02] >>562 >ACL Professionalの個人向け2年間$599リースは日本でもやってんの? Franz の営業さん (日本人) から聞きましたよ。 ただ、リースの場合のテクニカルサポートは英語のみだそうです。
566 名前:デフォルトの名無しさん mailto:sage [04/10/02 10:35:48] >>565 マジですか。小俣ちゃんが言うんならそうなんだろな。 ACL7がリリースされて予定通りMacOSXでCommon Graphicsがサポートされて 同一条件だったら欲しいかも。日本語のテクニカルサポートなんかイラネ。英語で充分。 $1200で買い取りと$599で2年間リースのどっちにすっかで迷うな・・・
567 名前:デフォルトの名無しさん [04/10/02 16:57:12] GaucheからPHPかPythonを使いたいのですが、どういう方法が あるのでしょうか? Cならこういう具合であるようなのですが。 www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Gauche%3aMeCab
568 名前:デフォルトの名無しさん mailto:sage [04/10/02 17:45:30] >>567 あのな、C言語でどうやって使うかを考えろ。 それわかったらGaucheでも使えるだろ。
569 名前:デフォルトの名無しさん mailto:sage [04/10/02 20:27:32] わかった!Pythonインタープリタを実装するんだね!!
570 名前:デフォルトの名無しさん mailto:sage [04/10/02 23:57:10] おれもわかった!PHP を Scheme で書きなおすんだ! …つか PHP なんてなんで使いたいんだ? Gauche で書けよ HTML も
571 名前:デフォルトの名無しさん mailto:sage [04/10/03 01:23:46] チ○コかきたい
572 名前:デフォルトの名無しさん mailto:sage [04/10/03 13:30:50] MIT schemeがアンインストールできないんですけど・・・何なんだよヽ(`Д´)ノ
573 名前:デフォルトの名無しさん mailto:sage [04/10/03 13:38:12] λ教は一度入ったら、 もう二度とやめれません
574 名前:デフォルトの名無しさん mailto:sage [04/10/03 13:48:31] 信者の社会復帰を支援するツールとしてPythonが用意されています
575 名前:デフォルトの名無しさん mailto:sage [04/10/03 14:00:08] Pythonなんてswitch文さえまともに使えない言語はダメ
576 名前:デフォルトの名無しさん mailto:sage [04/10/03 15:07:31] しかし豊富なライブラリは欲しいよぅ(;´Д`)
577 名前:デフォルトの名無しさん mailto:sage [04/10/03 15:26:09] では parrot 待ちだな
578 名前:デフォルトの名無しさん mailto:sage [04/10/03 17:26:11] parrotでみんな幸せになれますか?
579 名前:デフォルトの名無しさん mailto:sage [04/10/03 17:26:54] schemeでRS232-Cを制御しようと思ったらどうすればよいのでしょうか。
580 名前:デフォルトの名無しさん mailto:sage [04/10/03 17:47:41] >>579 >>568
581 名前:デフォルトの名無しさん mailto:sage [04/10/03 17:52:04] 初心者な質問ですみません。 よろしくお願いします。 CLOSで引数を2つ取るメソッドを定義した場合、 それ以降は引数の数が異なる同名のメソッドの定義(オーバーロード) って不可能なのでしょうか?
582 名前:デフォルトの名無しさん mailto:sage [04/10/03 18:52:54] >>579 termiosインタフェースがある処理系なら Schemeオンリーでできないか? Gaucheとか。 ioctlが叩けないからだめかな。
583 名前:デフォルトの名無しさん mailto:sage [04/10/03 20:47:03] >>581 普通にできるだろ
584 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:17:18] Unix でのおすすめの scheme 実行環境は何ですか?
585 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:21:37] >>584 guileが標準的
586 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:23:47] >>585 本気か? いや俺も標準的になって欲しいとは思ってるけど…
587 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:41:07] >>586 ここではそれが良いって書いてあるけれど… www.sra.co.jp/wingnut/standards-j_toc.html#Design%20Advice
588 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:41:39] GNU ソフトウェアの標準の拡張用インタプリタは GUILE である. GUILE はScheme 言語の実装である (Scheme は Lisp の非常にきれいで簡潔な方言である). www.gnu.org/software/guile/. われわれは他の「スクリプト言語」例えば Perl や Python で書かれたプログラムを 拒絶することはないが, GUILE を使うことは GNU システム全体の一貫性のためには 非常に重要である.
589 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:47:25] guile ってどう読むの?
590 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:48:48] >>588 それは知ってるけど、実際はまだろくに使っていないと思っているんだけど… おれが無知なだけだったらスマン、例を教えて欲しい
591 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:51:42] >>590 いや、私もどこで使われているか知らない。 同様の用途ではPerlかシェルを良く使うと思うけれど。 でも標準が合った方が良いのは確かでしょ? 乱立しても、いくつの処理系をインストールしたくないし。。 >>589 guile=ぐいるって読んでいるけれど、どうだろう。
592 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:51:57] guileで書かれたスクリプトって何かあるの? あまり見たことないような…
593 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:54:52] >>589 __,, , , , _ 、 ,,, ... ,, _ ..,_ ー=、 、ー-、`ヽ、、ヽ`!i' , ,i",r'",-'"=ミ `ヽ`ヾ`、 ! ヽ ! l! i! !_i_/_<'"`` `,T、iliー'" "、,"、', i, リ !/!,li ,;;-=o=-,ッィ=。ゥィ __ i、`!', '; `ー /;;!i、''; ,! ー''`ヽ`,ーi'`''"!、ヽ , `一'、 / __ `il `i ! ヽ、  ̄ ̄ / iヽ、/ ,.ヽ_ i! !` `ーァ、-ー' ! ノ!トi,!'",ノ-、 ,..=、i! iヽ-、 rィ',;'!ヽー-、! `/_,i' _,.!'、 ーニー-、._ `ヽゞニ-、.;' i! ! , `ト_ノ`x-'" ノ =ニヽ、 , `, /ヾ=ソ ノ !/ !、`ー`''イ、 -ー-、 `i, / / ヽ `イ_, i -'" ̄`! ! ヽ Tノ /-'" ` ' ! ヽ !
594 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:56:04] いつになったら”まだ”が取れるんだろう。 永遠にこない気がしてならない。 そもそも「標準の拡張用インタプリタ」とはなんぞや? 何時使うんだよ。 Linuxのインストーラーはpythonで書かれている様だし。 使われないで標準もあったもんじゃない。 そもそもSCMをベースにしておきながらあの遅さはなんなんだ? Cにトランスレートすりゃあいいってもんでもないだろ。
595 名前:デフォルトの名無しさん mailto:sage [04/10/03 23:58:45] ガイルでしょう
596 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:01:51] www.google.co.jp/search?num=100&hl=ja&ie=UTF-8&newwindow=1&q=guile+%E3%82%AC%E3%82%A4%E3%83%AB&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja www.google.co.jp/search?num=100&hl=ja&ie=UTF-8&newwindow=1&q=guile+%E3%82%B0%E3%82%A4%E3%83%AB&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
597 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:06:59] www.google.co.jp/search?num=100&hl=ja&ie=UTF-8&newwindow=1&c2coff=1&q=guile+%E3%82%AC%E3%82%A4%E3%83%AB+lisp&lr=lang_ja www.google.co.jp/search?num=100&hl=ja&ie=UTF-8&newwindow=1&c2coff=1&q=guile+%E3%82%B0%E3%82%A4%E3%83%AB+lisp&lr=lang_ja
598 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:09:11] >>596 その検索結果には明らかに>>593 のガイルが含まれているよ
599 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:10:37] lisp ガイル 7件 lisp guile ガイル 3件 guile ガイル 303件 ノイズばっかだな
600 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:18:45] >>598 綴として読むのだからどのガイルでも良いと思う。
601 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:19:39] lispじゃ引っかかんないんじゃない? scheme
602 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:22:03] gaucheよりguileの方がいいところって何?
603 名前:デフォルトの名無しさん [04/10/04 00:22:52] gacuhe-gl のマンデルブロートのサンプルを実行したいんですけど load するだけじゃだめですよね 実行して画面にだしたいんですけどどうやったらよいのでしょう?
604 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:22:56] www.google.com/search?hl=ja&ie=UTF-8&q=scheme+guile+%E3%82%AC%E3%82%A4%E3%83%AB&lr= www.google.com/search?hl=ja&ie=UTF-8&q=scheme+guile+%E3%82%B0%E3%82%A4%E3%83%AB&lr=
605 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:23:08] >>602 GNUのお墨つき。
606 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:23:55] そこで Pika Scheme ですよ
607 名前:デフォルトの名無しさん mailto:sage [04/10/04 00:58:37] >>585 の凄まじい釣りっぷりで誰も>>584 に答えていないので、 debianでapt-cache search schemeしてみた。 その中でscheme実行環境っぽいのを適当に bigloo - A practical Scheme compiler chicken - Simple Scheme-to-C compiler drscheme - Scheme Programming Environment elk - the Elk Scheme interpreter escm - Embedded Scheme Processor guile-1.6 - The GNU extension language and Scheme interpreter mit-scheme - The MIT/GNU Scheme development environment mzscheme - Rice University PLT Scheme Interpreter oaklisp - An object-oriented dialect of Scheme. rscheme - Threaded, persistent, OO, scheme interpreter and compiler scm - A Scheme language interpreter. scsh - A `scheme' interpreter designed for writing system programs stalin - An extremely aggressive Scheme compiler stklos - An efficient Scheme System providing a powerful Object System gauche - A Scheme implementation designed for script writing. 沢山あるようなないような… スクリプトならgauche,それ以外ならmzscheme,mit-scheme,scm,gaucheあたりが無難?
608 名前:デフォルトの名無しさん mailto:sage [04/10/04 01:09:19] gimpとか
609 名前:デフォルトの名無しさん mailto:sage [04/10/04 01:13:37] その中だとbiglooがよさそう
610 名前:デフォルトの名無しさん mailto:sage [04/10/04 02:04:45] guileはGNU/LINUXならほぼ最初から入っているので、悪い選択じゃない。
611 名前:デフォルトの名無しさん mailto:sage [04/10/04 02:08:11] >>610 貴様はguile使ったことあるのか? guile常用してるやついるの? 何に使うのか知らんが。
612 名前:デフォルトの名無しさん mailto:sage [04/10/04 02:27:24] scheme処理系一覧っぽいのが出てきたところでふと思い出したのですが、 リアルタイムで経緯をご存知の方がいたらYale Tがどんな末路を辿ったのか教えて いただきたく。全然話題にも上らないんでマイナーな本なんだろうと思うけど Slade先生のObject-Oriented Common LispでLisp使い始めたのでちと興味あり。
613 名前:デフォルトの名無しさん mailto:sage [04/10/04 07:46:46] >>581 > CLOSで引数を2つ取るメソッドを定義した場合、 > それ以降は引数の数が異なる同名のメソッドの定義(オーバーロード) > って不可能なのでしょうか? ラムダリスト(引数リスト)が合同(congruent)のメソッドは一つのGeneric function に共存できると規定されています。 required argumentの数が違う2つのラムダリストは合同とは言えません。 find-method, remove-method を駆使して、メソッドをgeneric functionからすべて削除 した後で、異なるラムダリストを持つgeneric functionを定義することは可能です。 (defmethod foo (a b &optional c)) としておくのはダメなの?
614 名前:デフォルトの名無しさん mailto:sage [04/10/04 08:30:22] 既に知ってるかもしれんが、T についての文書ってこれくらいしか知らんなあ。 Olin Shivers: History of T store.yahoo.com/paulgraham/thist.html
615 名前:デフォルトの名無しさん mailto:sage [04/10/04 23:28:40] >>307 UnCommon Web は継続渡しスタイルで書けてなかなかおもしろい。
616 名前:デフォルトの名無しさん [04/10/05 09:34:36] Schemeで次のようなリストを生成したいのですが、 どういう手続きになるのでしょうか。 (define l '("a" "b" ("c" "c1" "c2"))) (define (foo l) (?)) => (list ("a" "b" "c" "c1")("a" "b" "c" "c2"))
617 名前:デフォルトの名無しさん mailto:sage [04/10/05 09:53:24] >>616 (define l '("a" "b" ("c" "c1" "c2"))) (define (foo boo) `(list ,boo)) (foo l) => (list ("a" "b" ("c" "c1" "c2")))
618 名前:デフォルトの名無しさん mailto:sage [04/10/05 12:32:40] >>616 の質問も、>>617 の回答も、まったく意味がわからんのは俺だけ?
619 名前:デフォルトの名無しさん mailto:sage [04/10/05 13:07:29] 俺も分からん.
620 名前:デフォルトの名無しさん [04/10/05 13:39:12] >> 618,619 すいません。質問がまちがってました。やりたいことは、S式で表現 したディレクトリ構造から文字列を生成する、です。 (define l '("a" "b" ("c" "c1" "c2"))) (define (foo l) (?)) => ("a/" "a/b" "a/c/" "a/c/c1" "a/c/c2")
621 名前:デフォルトの名無しさん [04/10/05 13:43:39] >>620 リストはディレクトリ。そのリストの先頭がディレクトリ名。 リスト内の2番目以降がファイル名。としています。 (define l '("etc" "hosts" ("apache" "httpd.conf" "httpd.conf.bak")))
622 名前:(define (´∀`) 'マターリ) mailto:sage [04/10/05 14:09:14] (define (foo l) (let loop ((dir "") (l l)) (if (list? l) (map (lambda (l) (loop (string-append dir (car l)) l)) (cdr l)) (string-append dir l)))) 今思いついたのはこんなの。
623 名前:(define (´∀`) 'マターリ) mailto:sage [04/10/05 14:20:57] (define (foo l) (let loop ((dir "") (l l)) (if (list? l) (let ((dir (string-append dir (car l) "/"))) (cons dir (apply append (map (lambda (l) (loop dir l)) (cdr l))))) (list (string-append dir l)))))
624 名前:デフォルトの名無しさん mailto:sage [04/10/05 14:34:04] こんなもんか。(elisp) (defun foo (tree prefix) (cond ((null tree) nil) ((atom tree) (list (concat prefix tree))) (t (let ((new-prefix (concat prefix (car tree) "/"))) (apply #'append (list new-prefix) (mapcar #'(lambda (file) (foo file new-prefix)) (cdr tree))))))) と書いたところで、623 と被ってるじゃん。
625 名前:デフォルトの名無しさん [04/10/05 14:50:25] >> 622 623 Gaucheを使ってます。このコードは何で動くのでしょうか。 >> 624 elispで動きました。gaucheのコードではどうなるのでしょうか。
626 名前:デフォルトの名無しさん mailto:sage [04/10/05 15:14:42] >>625 やれやれ... それは君への宿題とするので来週までに解いてきたまえ。 それと、メール欄に sage と書きたまえ。
627 名前:デフォルトの名無しさん mailto:sage [04/10/05 15:20:19] なんとかできました。(なんでsageって必要なんですか?2chよく知らないんです) (define (foo tree prefix) (cond ((not(pair? tree)) (list (string-append prefix (x->string tree)))) (else (let ((new-prefix (string-append prefix (car tree) "/"))) (apply append (list new-prefix) (map (lambda (file) (foo file new-prefix)) (cdr tree)))))))
628 名前:(define (´∀`) 'マターリ) mailto:sage [04/10/05 16:52:09] (define (foo l) (define (f x) (string-append (car l) "/" x)) (define (g x) (if (list? x) (foo (cons (f (car x)) (cdr x))) (list (f x)))) (cons (f "") (apply append (map g (cdr l))))) >>625 全角スペースを取ればSCMで動いたよ。 622は失敗作。
629 名前:デフォルトの名無しさん mailto:sage [04/10/05 22:06:35] >>614 Tについてのドキュメントって異様に少ないですよね。普通に失敗したプロジェクトだったの でしょうか。 >>615 継続スタイルはUCWのウリみたいですが、フレームワークの他の部分はどんな感じですか? 副作用バリバリの手続きでHTML生成する設計になってたりしたらイヤかも。 beseのMLに開発者がポストしてましたが、パフォーマンスが気になるくらい遅いですか? もう少し詳細な使用感を語っていただけるとうれしいです。参考にするので。
630 名前:デフォルトの名無しさん mailto:sage [04/10/05 22:52:06] Tは失敗というか、誰もメンテしなかった・できなかった結果のような 386以降で書かれてたなら誰もが欲しかっただろうし
631 名前:デフォルトの名無しさん mailto:sage [04/10/05 23:01:51] SICP を見ながら書いてみました。どうっすか? (define (foo l) (define (foo-iter result dir file) (if (eq? file '()) result (if (pair? (car file)) (let ((next-dir (string-append dir (caar file) "/"))) (foo-iter (append result (list next-dir)) next-dir (cdar file))) (foo-iter (append result (list (string-append dir (car file)))) dir (cdr file))))) (let ((dir (string-append (car l) "/"))) (foo-iter (list dir) dir (cdr l))))
632 名前:631 mailto:sage [04/10/05 23:11:19] 間違ってた... かなり無理があるけど、これで当っているかな? (define (foo l) (define (foo-iter result dir file) (if (eq? file '()) result (if (pair? (car file)) (let ((next-dir (string-append dir (caar file) "/"))) (foo-iter (foo-iter (append result (list next-dir)) next-dir (cdar file)) dir (cdr file))) (foo-iter (append result (list (string-append dir (car file)))) dir (cdr file))))) (let ((dir (string-append (car l) "/"))) (foo-iter (list dir) dir (cdr l))))
633 名前:デフォルトの名無しさん mailto:sage [04/10/05 23:12:35] (let ((next-dir (string-append dir (caar file) "/"))) (foo-iter (append result (list next-dir)) next-dir (cdar file))) (car file)の処理はこれでいいんだろうけど(cdr file)の分の処理がない。
634 名前:デフォルトの名無しさん mailto:sage [04/10/05 23:17:32] (if (pair? (car file))の内側に(foo-iterがあるけど (foo-iterの内側に(if (pair? (car file))を持っていったほうが すっきりすると思う。
635 名前:631 mailto:sage [04/10/05 23:34:12] >> 633 まったく、おっしゃる通りでした。 >> 634 ...暫く考える... なるほど。なんとなくイメージできました。勉強になります。 他の人のと見比べるとやっぱり、map とかも勉強しないとだめですね。
636 名前:デフォルトの名無しさん mailto:sage [04/10/06 00:45:10] >>631 SICPの何ページですか。俺の勉強したいので。
637 名前:デフォルトの名無しさん mailto:sage [04/10/06 01:08:52] letrec fib=fn(n)return n<2?n:fib(n-1)+fib(n-2); fib(30); let fib2; fib2=fn(n)return n<2?n:fib2(n-1)+fib2(n-2); fib2(30); let fib3=fn(f,n)return n<2?n:f(f,n-1)+f(f,n-2); fib3(fib3,30);
638 名前:631 mailto:sage [04/10/06 01:26:58] >>636 そのものズバリ、というのはないのです。スマソ。 まだ LISP お勉強中なので教科書を見ながらでないと書けないと いうことでして。 全体の構造は P.19 の脚注にある factorial から fact-iter を 呼び出し、fact-iter の末尾再帰でループ、というのを真似ています。 foo の内部で関数 foo-iter を定義し、foo-iter の末尾再帰で 各ディレクトリエントリ毎に反復になっています。 fact-iter での product が foo-iter での result に対応します。 ややこしいのはディレクトリエントリ毎の処理(下の foo-entry)で、 エントリがファイルの場合はそのファイル名を result リストに加える だけなのですが、エントリがディレクトリの場合は result リストに 当該ディレクトリ以下の全てのファイル名を foo-iter で得て result リストに加える必要があります。 (define (foo l) (define (foo-entry result dir entry) (if (pair? entry) (let ((next-dir (string-append dir (car entry) "/"))) (foo-iter (list next-dir) next-dir (cdr entry))) (list (string-append dir entry)))) (define (foo-iter result dir files) (if (eq? files '()) result (foo-iter (append result (foo-entry result dir (car files))) dir (cdr files)))) ;; foo 本体 (let ((dir (string-append (car l) "/"))) (foo-iter (list dir) dir (cdr l))))
639 名前:デフォルトの名無しさん mailto:sage [04/10/06 01:59:12] foo-entryにresultはいらんな。
640 名前:デフォルトの名無しさん mailto:sage [04/10/06 02:05:50] foo 本体は(foo-entry 'hoge "" l)でいいな。
641 名前:デフォルトの名無しさん mailto:sage [04/10/06 14:10:36] >>638 結局 (append result (foo-entry result dir (car files))) で ディレクトリの深さ分スタック使うのだから 普通に再帰で書いたのに比べて何もメリットがなくない? -- (define (foo l) (if (string? l) (list l) (map (lambda (x) (string-append (car l) "/" x)) (cons "" (apply append (map foo (cdr l)))))))
642 名前:デフォルトの名無しさん mailto:sage [04/10/06 14:14:09] スペースの変換を忘れてたorz (define (foo l) (if (string? l) (list l) (map (lambda (x) (string-append (car l) "/" x)) (cons "" (apply append (map foo (cdr l)))))))
643 名前:631 mailto:sage [04/10/06 23:21:02] >>639 >>640 確かにそうですね。 >>641 メリットは特にないですね。 高階関数に馴染みがなくてあれ以外の実装を 思いつかなかったというのが真相だったりします。 やろうと思えば引数を増やして全て末尾再帰にできるかも しれませんが、やたら読みにくいソースになるでしょうね。
644 名前:デフォルトの名無しさん mailto:sage [04/10/07 23:52:58] 埋め込み言語の例というのが見てみたいんだけど, onlisp 以外にもなにかありませんか?
645 名前:デフォルトの名無しさん mailto:sage [04/10/08 00:21:31] >>644 これとか? ttp://www.shiro.dreamhost.com/scheme/vault/escm.html これはちょっと埋め込みとはちがうけど、S 式で HTML を書くというアプローチ ttp://cl-www.msi.co.jp/solutions/knowledge/ ttp://cl-www.msi.co.jp/solutions/knowledge/src
646 名前:645 mailto:sage [04/10/08 00:28:51] あ、ちがった、埋め込み言語ってそういう意味じゃないのね。 たとえば Lisp/Scheme で書かれた LR パーザジェネレータとか。 腐るほどありそうだな。今、さっと見つかったのはこんなの。 ttp://www.informatik.uni-freiburg.de/proglang/software/essence/doc/html/essence.html
647 名前:644 mailto:sage [04/10/08 01:00:10] >>646 ども. たしかに数はたくさんありそうなんですけど,うまく見つけられなくて. ここのリンク先のはソースもあるんで, schemeは使ったこと無いけど,本とにらめっこしながら読んでみます. 他にもいい例があればお願いします.
648 名前:デフォルトの名無しさん mailto:sage [04/10/08 01:13:04] LISPはちょっとかじった程度でよくわかってないのですが 質問させてください たとえば、Cでネットワークゲームを作るときに なんか処理したかったら、適当なデータ構造に 情報を埋め込んで送信して、受信側でデータを解釈→処理 とかなりますよね LISPのevalとかを使うと、プログラム本体がデータ構造もかねるから 動作させたい処理のS式をそのままリテラルとして送信して eval させて動作させてしまう、とか出来るんでしょうかね?
649 名前:デフォルトの名無しさん mailto:sage [04/10/08 01:54:37] Lisp に限らず、eval のある言語ならだいたいできるんじゃないのかな。
650 名前:デフォルトの名無しさん mailto:sage [04/10/08 02:08:45] eval is evil.
651 名前:デフォルトの名無しさん mailto:sage [04/10/08 07:33:19] でもそういう設計はよくないけどな。 ネットワーク越し(じゃなくても)で通信するときに相手から送られてくるものを 信用するというのは危険すぎる、ということを歴史は教えている。
652 名前:デフォルトの名無しさん mailto:sage [04/10/08 08:02:59] >>651 アプレットやSOAPと基本は同じでしょ? 用はセキュリティーの確保の仕方の問題だと思われ。
653 名前:デフォルトの名無しさん mailto:sage [04/10/08 09:32:56] >>648 evalも結局のところは、「受信側でデータを解釈→処理」してるだけ なんだけどね。「解釈→処理」の処理系が最初から用意されていると いうだけで。 汎用性が高い、本体と同じ言語で書ける、といった側面はそのまま メリットにもデメリットにもなるし。
654 名前:デフォルトの名無しさん mailto:sage [04/10/08 10:17:45] scheme の eval みたいに環境を指定できれば比較的手軽にセキュリティー確保できるね
655 名前:デフォルトの名無しさん mailto:sage [04/10/08 11:19:34] shiro さんの2004.10.07の文章で、 www.shiro.dreamhost.com/scheme/wiliki/wiliki2.cgi?Shiro 以前から Lisper としての適性に関係があるとして、時々話題になっている、 アスペルガー症候群・高機能自閉症の、簡易テストが紹介されている。 「平均は16.4ポイントで、 32ポイント以上のうち8割はautism related disorder だそうだ。私(shiroさん)は31ポイントだった」そうです。 www.wired.com/wired/archive/9.12/aqtest.html 自分でやってみたところ、慎重に回答したのに38ポイントだった。 しかし自分はヘタレ Schemer。ぜんぜんLisp能力に比例して無いじゃん…。
656 名前:デフォルトの名無しさん mailto:sage [04/10/08 12:14:36] このテスト、人間関係が苦手である、うまく行っていないという項目が多いな。 だから、 ・ Lisper として能力が高い →・他言語のプログラマとしても成功する →・周囲から尊敬を集める →・人間関係が良くなる →・このテストのスコアが下がる Lisper としての能力と、このテストのスコアには、こういう負の相関が 働いている気がするのだが。
657 名前:デフォルトの名無しさん mailto:sage [04/10/08 12:48:17] 心理テストに気休め以上の意味があるとは思わん。
658 名前:デフォルトの名無しさん mailto:sage [04/10/08 17:18:30] >>655 辞書引きながらやってみた。 24ポイント。 微妙に低くてチョトくやしい (w
659 名前:655 mailto:sage [04/10/08 18:40:48] 念のために言うけど、このテストはまったく当てにならないと思うよ。 『on Lisp』をいつまでも読み進められない私がそれは保証できる。 だけどなんとなく、ほかの人の点数も知りたいのう。 冷やかしでトライしてくれた人、他にもいたら書き込んでください。 おながいします。
660 名前:デフォルトの名無しさん mailto:sage [04/10/08 19:26:09] 34。Lisp は好きだけど能力があるのかどうか……