1 名前:デフォルトの名無しさん [2005/05/12(木) 21:44:01 ] 過去スレ 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: pc5.2ch.net/tech/kako/1042/10421/1042167213.html Part8: pc5.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/ Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/ Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/ 関連リンクは>>2-10 あたり
2 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 21:45:39 ] >>1 スレ立て代行して頂きまして、 どうもありがとうございました。。。 世の中、良い人も居るんだなぁ〜とチョと嬉しくなりますた。
3 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 21:46:16 ] □参考リンク□ 日本Lispユーザ会(日本語) jp.franz.com/jlug/index.html ここにかなりの情報があります。 jp.franz.com/ 削るとAllegro Common Lispのページへ プログラミング言語Scheme(日本語) ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html Schemeの人はまずここを見ましょう。 Lisper への道(日本語) ttp://www.geocities.co.jp/SiliconValley-Oakland/1680/rakup.html 判りやすいLISP入門サイト。 Schemeへの道(日本語) ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html ここはschemeの入門サイト。
4 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 21:46:28 ] □参考リンク□ 日本Lispユーザ会(日本語) jp.franz.com/jlug/index.html ここにかなりの情報があります。 jp.franz.com/ 削るとAllegro Common Lispのページへ プログラミング言語Scheme(日本語) ttp://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html Schemeの人はまずここを見ましょう。 Lisper への道(日本語) ttp://www.geocities.co.jp/SiliconValley-Oakland/1680/rakup.html 判りやすいLISP入門サイト。 Schemeへの道(日本語) ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html ここはschemeの入門サイト。
5 名前:デフォルトの名無しさん [2005/05/12(木) 21:47:00 ] 慶応の授業のページ・記号処理プログラミング 2001 buri.sfc.keio.ac.jp/lisp/menu.html Practical Scheme(日本語) ttp://www.shiro.dreamhost.com/scheme/index-j.html 「普通のやつらの上を行け」など、興味深い文書を沢山翻訳されてます。 (Gaucheという完成度の高いscheme処理系作者さんのページでもあります。) Scheme Hash(英語) okmij.org/ftp/Scheme/index.html S式でXMLを使える様にするSXMLなど John McCarthy's Home Page www-formal.stanford.edu/jmc/ LISPの生みの親、J・マッカーシーのページだそうです。 Association of Lisp Users www.alu.org/alu/home 米国のLispユーザ会
6 名前:デフォルトの名無しさん [2005/05/12(木) 21:47:30 ] □SICP関係□ SICP(英語) mitpress.mit.edu/sicp/full-text/book/book.html 「計算機プログラムの構造と解釈」の原書です。 全てオンラインで読めます。 計算機プログラムの構造と解釈 第二版 (snip) に関連するホームページ www.ipl.t.u-tokyo.ac.jp/sicp/ SICPの回答集 www.melt.kyutech.ac.jp/~gogogo/sicp_ex/ pluto.aurorasd.co.jp/~mkama/sicp/ www.ipl.t.u-tokyo.ac.jp/sicp/solution.root.html www.sampou.org/scheme/sicp/answer/
7 名前:デフォルトの名無しさん [2005/05/12(木) 21:48:41 ] □その他□ Schemeで書かれた正規表現ライブラリ ttp://www.cs.rice.edu/~dorai/pregexp/pregexp.html 幻の「入門Scheme」 ttp://www4.ocn.ne.jp/~inukai/scheme_primer_j.html オンラインで読める 各種scheme処理系をcygwin上からビルドする方法など。 ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7043/ Bit - Implantation compacte de Scheme www.iro.umontreal.ca/~dube/ mini-schemeよりも小さい(?)bytecode変換系 Lisp 言語処理系: CAMPUS LIsP, Lemon version aten.aial.hiroshima-u.ac.jp/~kakugawa/clisp/index-ja.shtml Cコードによるわずか1000行の実装 Cliki www.cliki.net/index CommonLispのプログラムがたくさん紹介されているのでここを当たるべし。
8 名前:デフォルトの名無しさん [2005/05/12(木) 21:49:14 ] encyCMUCLopedia www.isr.ist.utl.pt/library/docs/encycmuclopedia/doc/ cmucl以外でも有益なはず CMUのLisp Repository ftp://ftp.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/0.html 新旧様々なプログラムが置いてある Tiny CLOS Tutorial home.adelphi.edu/~sbloch/class/272/tclos/tutorial.shtml Schemix www.abstractnonsense.com/schemix/ Linuxのkernelへのパッチで、/dev/として扱えるTinyScheme Bibliography of Scheme-related Research library.readscheme.org/ Scheme関連の論文リンク集
9 名前:デフォルトの名無しさん [2005/05/12(木) 21:50:32 ] その他よさそうなリンク awkで書かれたわずか500行のLispインタプリタ awklispを読めばLispが理解できる ttp://www.accesscom.com/~darius/ Emacs Lisp 2 pc2.2ch.net/test/read.cgi/tech/1068467385/ * Hotdog Scheme rover.cs.nwu.edu/~scheme/ MS が金出してたみたい * Bigloo www-sop.inria.fr/mimosa/fp/Bigloo/ CLR 用のコードを吐けるようになったらしい 継続 なんでも継続 ttp://www.shiro.dreamhost.com/scheme/docs/cont-j.html Schemeへの道:継続 www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/continuation.html 継続の使い方 www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#continuation 継続の使用法 www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/block.html CPS(継続渡しスタイル)の説明 www.csl.sony.co.jp/person/masui/Forum/data/20011215023622/ Kahua: 継続ベースのアプリケーションサーバー ttp://www.kahua.org/
10 名前:デフォルトの名無しさん [2005/05/12(木) 21:51:06 ] 仕様関係) CLtL2: Common Lisp the Language 2nd edition www-2.cs.cmu.edu/Groups/AI/html/cltl/cltl2.html CLHS: Common Lisp Hyper Spec www.ai.mit.edu/projects/iiip/doc/CommonLISP/HyperSpec/FrontMatter/Chapter-Index.html R5RS: Revised(5) Scheme(ja) www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html 便利な情報リソース) The Common Lisp Cookbook: いわゆる Cookbook cl-cookbook.sourceforge.net/ 小さい実装) SECDR-Scheme: SECD machine model に基づく実装 ttp://lily.fan.gr.jp/~kmd/adhoc/view.rhtml?n=SECDR-Scheme_woyomu Minischeme: 1 ファイルに凝縮された Scheme 処理系 tinyscheme.sourceforge.net/minischeme.tar.gz TinyScheme: Minischeme を色々弄ったもの tinyscheme.sourceforge.net/ KI-Scheme, AM-Scheme, etc... www.nifty.com/download/dos/prog/lisp/ LispMe: Palm 上で動く Scheme 処理系. これも SECD virtual machine. www.lispme.de/lispme/
11 名前:デフォルトの名無しさん [2005/05/12(木) 21:51:34 ] LISP Scheme Part9 (html化) ruku.qp.tc/dat2ch/0403/01/1069594582.html 独習 Scheme 三週間 www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-1.html Schemeの教科書 よろずや www.geocities.co.jp/SiliconValley-SanJose/7474/ lispの実用的な情報が色々。
12 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 21:54:42 ] >>1-11 おつかれさまです
13 名前:前すれ995 mailto:sage [2005/05/12(木) 22:06:47 ] すまん駄目だった。 何も書かないってのはまずかったな。 かえってストレス溜まるわ。 >1乙
14 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 22:55:58 ] こいつらも貼っておこうぜ Common-Lisp.net: 多くのプロジェクトがホスティングされてる ttp://common-lisp.net/ Bill Clementson's Blog: Lisp関連の話題が中心のBlog ttp://home.comcast.net/~bc19191/blog/ Practical Common Lisp: S式の羅列で現実的な問題をどう解くのかそのギャップに悩まされてる人に ttp://www.gigamonkeys.com/book/
15 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 23:02:53 ] >>13 乙です。 末尾再帰 (define fact (lambda (n) (letrec ((fact-tailrecursion (lambda (n prod) (if (= n 1) prod (fact-tailrecursion (- n 1) (* prod n)) ) ) )) (fact-tailrecursion n 1) ) ) 上記の末尾再帰は、下記のiterationと等価。 (define fact-iteration (lambda (n) (do ((n n (- n 1)) (prod 1 (* prod n)) ) ((= n 1) prod) ) ) )
16 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 23:04:11 ] 新スレわざわざ立てずとも、 末尾再帰最適化でなんとかならんのかw
17 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 23:07:54 ] 継続があれば
18 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 23:09:10 ] とりあえず gc しときますね。
19 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 23:40:23 ] ゴミがまったくなかったらGCなんて無意味
20 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 09:23:04 ] ゴミのないものなどない >1 乙
21 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 20:09:25 ] 再利用できないゴミばっかだったらGCなんて無意味
22 名前:デフォルトの名無しさん mailto:sage [2005/05/14(土) 22:25:15 ] Prolog → … → Progol / μPlannner→Planner → Conniver→ Scheme → Common Lisp → ISO Lisp \ / ▲このスレ Plasma → → → → ABCL → ... Simula67→ Smalltalk70 → … → Smalltalk80 → … → Java , C# (w 目的指向プログラミング 論理プログラミング 帰納論理プログラミング 積み木の世界 Actor理論 並列オブジェクト 分散オブジェクト マルチエージェント セマンティックWeb
23 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 02:45:27 ] >>22 は何?
24 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 02:55:24 ] gcされなくなるので参照しないこと
25 名前:デフォルトの名無しさん [2005/05/15(日) 03:52:27 ] 2ちゃんで異様に伸びてるスレって、 大抵ネイティブ住人はとうの昔に消えて、 荒しが初期のスレの拡大再生産してるだけだって噂、本当なんだな。 ここまで荒廃してるとは知らなかった。もうこねぇよ。じゃぁな
26 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 03:55:18 ] >>25 は何?
27 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 04:07:19 ] >>22 = >>25
28 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 04:14:59 ] よくわかりませんが、ここに (gc) 置いときますね
29 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 10:32:03 ] >>22 いろいろ消し過ぎ....gcのバグか?
30 名前:デフォルトの名無しさん [2005/05/15(日) 11:57:14 ] 以下の処理が実行できない理由を教えて下さい。 (define a 33) (letrec ((c a)(a 10)) c)
31 名前:30 mailto:sage [2005/05/15(日) 12:22:26 ] すみません。自己解決しました。 letrecで、cとaの未初期化領域が生成され、cには未初期化のaの値がはいる。 そのため、gaucheだと#undefがでてくる。 letrecの本質は、ローカル変数定義時にエラーを出さずに本体を実行するという部分にあるのですね。
32 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 12:29:16 ] >>31 それは違う
33 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 15:51:50 ] recはrecurs-のrec
34 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 09:37:17 ] >>31 >letrecの本質は、ローカル変数定義時にエラーを出さずに本体を実行するという部分にあるのですね。 これは違うと思う。30の例はシンタックスエラーになるべきだと思うんだが。 > gaucheだと#undefがでてくる ということは、もしかしてgaucheだと (define a 33) (letrec ((c a) (a 10)) (set! c a) c) --> 10 になるのかな? そうなるとしたら、ちょっと不味いと思うんだが....どう?
35 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 09:41:09 ] >>34 それで10になるのは全然問題なさそうに思うんだけど、どうまずいの?
36 名前:34 mailto:sage [2005/05/16(月) 09:52:10 ] >>35 gaucheの#undefがどういう意味で出力されているのか知らないから聞いたんだけど、もしこれがletrec全体の評価結果として出力しているとしたら、これはシンタックスエラーを無視して実行していると思えたからなんだ。 これは、cにaを束縛しようとした時点で未定義変数への参照によるエラーが発生するべきだと思うからなんだけど.... これは正しいプログラムなら実行結果は同じになるからいいんだけど、schemeの勉強に使うにはちょっと不味いんじゃないかと思ったんだ。 実際、30は勘違いしたみたいだし。
37 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 10:43:01 ] 補足: R5RS 4.2.2 より (letrec
38 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 10:46:37 ] 補足: R5RS 4.2.2 より (letrec
39 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 12:11:05 ] >>36 エラーを出さなくてもR5RS違反ではないけどね。学習用として不親切ではあるな。
40 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 12:20:51 ] 局所変数定義 letrec使ってエラーだエラーじゃないって? 頭が可笑しい人のレスか
41 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 12:32:23 ] letrec ではすべての局所変数が定義されてから初期化されますが、 初期化中に局所変数をアクセスするとエラーになってしまいますので注意。 すべての初期化が終わってからでないとアクセス出来ません。 letrec は、再帰関数を定義するのに使います。 (letrec ((fact (lambda (x) (if (> x 0) (* (fact (- x 1))) 1)))) (fact 10))
42 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 13:15:00 ] 学習用の DrScheme でもエラーにならないね。 (letrec ((x a) (a 1)) ...) を (let ((x 未定義) (a 未定義)) (set! x a) (set! a 1) ...) のように展開 する実装では、チェックが難しいのかな。
43 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 13:36:54 ] エラーになる処理系ある?
44 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 16:07:24 ] SCM はエラー出すみたい。
45 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 21:36:19 ] >>9 >継続の使用法 >ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/block.html これの学生さん卒業したのかな 2005 年 4 月以降どうなるか不明と書いてある Bill Clementson's Blog も移動するみたいだね ttp://home.comcast.net/~bc19191/blog/index.html
46 名前:デフォルトの名無しさん mailto:sage [2005/05/16(月) 22:00:06 ] ああ。学生の頃の自分思い出して、やり切れない気持ちになった。 特にLispって研究テーマにはなりにくいよなぁ。 最近は、ソフトウェア実装屋を対象とした学部/研究科が増えてるらしいけど。 俺の友人で、どうしても哲学をやりたくて、社会人入学した香具師がいる。 まだ数年前、塾だか予備校で飯代稼ぎながら、いろいろ模索してた。 そこまで真剣に学問の道を考えるなら、きっと誰か拾ってくれるでしょ。と祈りたい(w
47 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 02:55:59 ] どっかで見た話題だなあと思ったら、似たのが sicp の練習問題にあるね。 letlec じゃなくて internal define だけど。 mitpress.mit.edu/sicp/full-text/book/book-Z-H-26.html#%_thm_4.19 確か r6rs では internal define と関連して letlec* が追加されるとかいう話だけど、 未束縛の変数に左から順に set! していく、て実装だったら そっちの方がやってる事に即している感じはするな。
48 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 13:10:19 ] r6rsって出るのかなぁ
49 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 13:17:03 ] 今議論してるんだから、出るだろ。そのうち。
50 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 22:52:50 ] R6RSに含まれる機能は何でしょう? おれが欲しいと思ってるのは ・名前空間 (せめてパッケージ)はぜひとも導入して欲しい。 いつまでも大域letで囲むなんて馬鹿げてる。 ・多値のファーストクラス化 インタプリタの延長みたいな実装がほとんどの現状で 多値を効率よく扱える手段がないとまともに使いたくない。 (let ((v (values 1 2 3))) (if (values? v) (value-ref v 2) ;; => 3 (error "excepted values")) とか。 せめて上のvalues?のように関数の返す値が多値かどうか 呼び出し側で判らないと使い物にならないだろう。 ・関数呼び出し側の名前つき引数。 VBのアレは便利だろ? あと ・キーワード、定義済マクロ名の参照はエラーにする くだらん論争の種を潰す。 とか。
51 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:18:59 ] www.schemers.org/Documents/Standards/Charter/
52 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:39:22 ] >>51 >remove multiple values 正気かよ。 って、まだ決まってないのか。 消すんじゃなくて発展させる方向に行かないかね。 副作用記述減らせる手段の1つなのに。
53 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:49:43 ] >>50 > ・名前空間 > ・関数呼び出し側の名前つき引数。 Common Lisp で幸せ
54 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:51:41 ] いや、CommonLispに転向するぐらいならLISP辞めたほうがマシ
55 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:52:37 ] 以降、CL厨が暴れます。。。
56 名前:デフォルトの名無しさん mailto:sage [2005/05/17(火) 23:58:10 ] R6RS より CLtL3 をやってほしい
57 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 00:03:09 ] >>54 >副作用記述減らせる手段の1つなのに。 詳しく。
58 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 00:19:04 ] リスト内包表現が簡単に書けた。拡張可能だしhaskellより便利になり得る。 (define-syntax %inner-tuple (syntax-rules (<-) ((_ (<- ret) form var val rest ...) (%inner-tuple ret (set! ret (cons form ret)) var val rest ...)) ((_ ret form () ()) (let ((ret '())) form (reverse! ret))) ((_ ret form (pred rest-var ...) (<- rest-val ...)) (%inner-tuple ret (if pred form) (rest-var ...) (rest-val ...))) ((_ ret form (var rest-var ...) (val rest-val ...)) (%inner-tuple ret (let lp ((lis val)) (if (null? lis) '() (let ((var (car lis))) lis form (lp (cdr lis))))) (rest-var ...) (rest-val ...))) ((_ ret form (var ...) (val ...) (var1 <- val1) rest ...) (%inner-tuple ret form (var1 var ...) (val1 val ...) rest ...)) ((_ ret form (var ...) (val ...) pred rest ...) (%inner-tuple ret form (pred var ...) (<- val ...) rest ...)) )) (define-syntax tuple (syntax-rules () ((_ form args ...) (%inner-tuple (<- ret) form () () args ...)))) (tuple (cons i j) (i <- (iota 10)) (j <- (iota 10)))
59 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 03:22:06 ] クロージャ用シンタックスシュガー?
60 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 05:09:08 ] 多値なんて (関数引数と戻り値の対称性に関する神学的な論争を除けば) パフォーマンスハックにすぎないんだから、ファーストクラス化しちゃったら 唯一のメリットが失われるじゃん。 >>50 みたいに扱いたいならリスト返すか、(receive v (values 1 2 3) ...) で受ければいいだけだしさ。
61 名前:デフォルトの名無しさん mailto:sage [2005/05/18(水) 23:48:39 ] 神学的な論争こそがschemeの本質なのに!
62 名前:デフォルトの名無しさん mailto:sage [2005/05/19(木) 00:00:16 ] 否定はすまい
63 名前:デフォルトの名無しさん mailto:sage [2005/05/19(木) 00:14:04 ] ……………… き り と り せ ん ………………
64 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 01:34:32 ] 合理性 → HASKELL 神学的論争 → SCHEME 実用性 → その他
65 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 02:10:31 ] 実用性 → Common Lisp に決まってる
66 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 03:57:47 ] ……………… き り と り せ ん ………………
67 名前:デフォルトの名無しさん [2005/05/20(金) 22:23:21 ] 久々にSchemeインタプリタ作った やっぱええわ
68 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:25:37 ] 久々にCommon Lispコンパイラ作った やっぱ疲れるわ <湯浅>
69 名前:デフォルトの名無しさん mailto:sage [2005/05/20(金) 23:31:35 ] 「ええ、PM経験した僕も、一昨年は近山PMの下でスーパークリエータとしてデビューしました。 はぎゃー君も誘ったんだけど、彼は真面目だから付き合ってくれませんでした。 成果物は国際学会の発表ネタに使いまわしたんですけど、 サスマン教授は『素晴らしい。是非このロボを譲ってくれないか』って激賞されちゃいましたよ」 だいたいマジ
70 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:09:28 ] おとなげない
71 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:17:04 ] いみふめ。 こだわらずに楽しい事をやろうとする精神、 そして応募して採択されたもん勝ちだよんとアピールする姿に、 なんか楽しくなっちゃったけどなw
72 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:23:16 ] 重要なのは、言語でなくライブラリだよ
73 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:28:59 ] >>72 だよねー
74 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 00:42:32 ] また頭悪そうなのが粘着しはじめたな
75 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:46:28 ] 言語仕様(意味論込)として、scheme 以上にすっきりした言語 ってなにがありんすか?
76 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 01:48:10 ] ○ransk?
77 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:03:40 ] アセンブリ
78 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:05:48 ] 万能チューリング機械
79 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:10:23 ] brainf*ck
80 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 02:25:38 ] >>50 >・名前空間 >(せめてパッケージ)はぜひとも導入して欲しい。 >いつまでも大域letで囲むなんて馬鹿げてる。 遅レスすまそ。let使ってパッケージもどきを作る方法があるの? Schemeだとlet内でdefineしてもグローバルに反映されないから無理だと 思ってたんだけど(Common Lispならできる)。 モジュールじゃおおげさな時に使いたいので教えて。
81 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 07:56:06 ] 横スレだが、わたしゃこうしてる。 (define export:foo #f) (let () (define foo ...) ... (set! export:foo foo)) (define foo export:foo)
82 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 09:15:39 ] それならグローバルなハッシュテーブルに詰め込んでおく方が。 パッケージとは別に、CommonLisp風のset!(ローカルでunboundなら グローバルにbindする)ができたら便利だとは思うが、Schemeじゃ多分無理。
83 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 09:29:09 ] 俺はこうかな (define foo #f) (define bar #f) (let () (define hoge ...) (set! foo (lambda (...)...)) (set! bar (lambda (...)...)) ) でも、最適化が効きにくくて>>81 より遅くなりそうだな...(考え中) >それならグローバルなハッシュテーブルに詰め込んでおく方が。 それってどんなやりかた?
84 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:15:02 ] えぇー、scm.libとかでやってる方法がデフォルトだと思ってた
85 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:20:08 ] (make-hash-table xxx-package) (let (pi 3.141692) (define hoge ...) (hash-table-put! xxx-package 'foo (lambda (...) ...)) (hash-table-put! xxx-package 'bar (lambda (...) ...)) ) (define foo (hash-table-get xxx-package 'foo)) (define bar (hash-table-get xxx-package 'bar)) >>83 こんな感じ。実際こうやって使ったことないからちゃんと動くかわからないけど。 >>84 それはパッケージ管理?CommonLisp風のset!の提供の方?
86 名前:84 mailto:sage [2005/05/21(土) 11:40:44 ] >>85 パケージ管理の話してるんだろ、ここ?
87 名前:84 mailto:sage [2005/05/21(土) 11:57:22 ] slibの話のつもりだったんだけど・・・あれ?パッケージ管理してねぇや。。。スレ汚しすまそ
88 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 11:58:31 ] slibの話のつもりだったんだけど・・・あれ?パッケージ管理してるけど名前空間は分けてないや。。。スレ汚し^2すまそ
89 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:11:23 ] つまらんことで悩んでないで Common Lisp 使え
90 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 12:14:26 ] うぜ
91 名前:83 mailto:sage [2005/05/21(土) 15:17:48 ] >>85 なるほどそういう使い方があったのか THX! すると例えば (define-syntax define-package (syntax-rules (export) ((_ pkgname (export id ...) body ...) (begin (define pkgname (make-hash-table)) (let () body ... (hash-table-put! pkgname 'id id) ...) (define id (hash-table-get pkgname 'id)) ...)))) とやって (define-package foo-package (export foo bar) (define hoge 9) (define foo (lambda (x) (- x hoge))) (define bar (lambda (y) (+ y hoge)))) とすれば hoge => #unbound (foo 10) => 1 (bar 10) => 19 となるわけか。 実装に依存したくない時はいいかも!
92 名前:デフォルトの名無しさん mailto:sage [2005/05/21(土) 16:11:17 ] hash-table自体が実装に依存する罠 まあ後付で作れるけどさ
93 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 03:54:25 ] すごく遅くてもいいならalist使えばいい。
94 名前:ミミ [2005/05/22(日) 19:28:26 ] Scheme でクラスを定義する場合、 メンバ変数の命名規則はどうしていますか? Java や C++ だと m_var とか _var とか var_ とかで 命名すると思いますが、Scheme でアンダースコアは あまり使われませんよね。
95 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:43:35 ] >>94 そうでもない。アンダースコアも普通に使うよ。
96 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:55:17 ] 入力したlistを整数倍してlistで返すにはどうすればいいんですか?(list 3 4) → (list 6 8) みたいな感じです。 consでかえるようにならできたんですが。
97 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:56:18 ] map
98 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:58:57 ] >>96 (map (lambda (elt) (* elt 2)) (list 3 4)) --> (6 8) ってことかな?
99 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 22:59:39 ] ((cut map * 2 <>) '(3 4)) => (6 8) cut :: SRFI 26: Notation for Specializing Parameters without Currying
100 名前:デフォルトの名無しさん mailto:sage [2005/05/22(日) 23:02:09 ] (map (lambda (n) (* n 2)) (list 3 4)) LISPなど全く知らない俺が適当に書いてみました