1 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 19:12:39 ] ※ ここはCommon Lisp、SchemeをはじめとするLisp族全般のスレです ※ ■過去スレ Part25: ttp://pc12.2ch.net/test/read.cgi/tech/1231856193/ Part24: ttp://pc11.2ch.net/test/read.cgi/tech/1224939205/ Part23: ttp://pc11.2ch.net/test/read.cgi/tech/1215875388/ Part22: ttp://pc11.2ch.net/test/read.cgi/tech/1211381920/ Part21: ttp://pc11.2ch.net/test/read.cgi/tech/1207300697/ Part20: ttp://pc11.2ch.net/test/read.cgi/tech/1205021786/ Part19: ttp://pc11.2ch.net/test/read.cgi/tech/1200237296/ Part18: ttp://pc11.2ch.net/test/read.cgi/tech/1186922295/ Part17: ttp://pc11.2ch.net/test/read.cgi/tech/1177065699/ Part16: ttp://pc11.2ch.net/test/read.cgi/tech/1172404795/ Part15: ttp://pc11.2ch.net/test/read.cgi/tech/1151025773/ Part14: ttp://pc11.2ch.net/test/read.cgi/tech/1132275726/ Part13: ttp://pc11.2ch.net/test/read.cgi/tech/1115901841/ Part12: ttp://pc11.2ch.net/test/read.cgi/tech/1100229366/ Part11: ttp://pc11.2ch.net/test/read.cgi/tech/1091456033/ Part10: ttp://pc11.2ch.net/test/read.cgi/tech/1075630259/ Part09: ttp://pc11.2ch.net/test/read.cgi/tech/1069594582/ Part08: ttp://pc5.2ch.net/tech/kako/1058/10582/1058263391.html Part07: ttp://pc5.2ch.net/tech/kako/1042/10421/1042167213.html Part06: ttp://pc3.2ch.net/tech/kako/1031/10315/1031560687.html Part05: ttp://pc3.2ch.net/tech/kako/1023/10230/1023091882.html Part04: ttp://pc.2ch.net/tech/kako/1016/10162/1016211619.html Part03: ttp://pc.2ch.net/tech/kako/1008/10082/1008220265.html Part02: ttp://pc.2ch.net/tech/kako/1002/10025/1002584344.html Part01: ttp://piza2.2ch.net/tech/kako/987/987169286.html ■テンプレート置き場 ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)
902 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 13:09:07 ] おまいはこっちに行けw pc12.2ch.net/test/read.cgi/tech/1183396621/
903 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 13:42:06 ] もっとネタscheme処理系を!
904 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 13:44:06 ] いぷしろん萌え
905 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 16:17:27 ] VSCM萌え
906 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 20:47:00 ] Mathematica 萌え
907 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 21:29:44 ] 割と普通に関数型として使えるのには感心したが 正直書きにくかった
908 名前:デフォルトの名無しさん [2009/07/21(火) 22:30:28 ] Little Schemerを読んでるんですが、Qを読んですぐAを読むっていう ただ読んでるだけなんですが、 みなさんはちゃんと自分で答えを考えながら読んでるんですか?
909 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 22:32:49 ] 俺は考えて読んだけど、好きなようにすればいいんじゃないかな。 一度全部読んでから、次は自分で考えれば? たぶん二回目でも100点にはならないと思うから、 二回読むことには意味があると思う。
910 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 00:26:36 ] >>909 なるほど、ありがとうございます。 いま3章の終りに来ていますがなかなかなか複雑で頭を使います。がんがる。
911 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 02:23:55 ] LOLなんだけど、ざっと斜め読みしてたら、 マクロを本当に使いこなせるのはSchemeで修行してきた人達だ。 みたいなことが書いてあった。
912 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 04:29:56 ] Schemerのほうが偉い症候群ですねわかります
913 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 17:44:32 ] ↓ここからCLerの猛反論
914 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 18:19:14 ] まあ最近はSchemeからこの世界に入って、 Schemeで修行せずにCommon Lisp入る人の数の方が少ない、 ってのはそれほど間違ってないと思う。 Schemeは取り上げる大学が多いからね。 そんな噛みつくことじゃないのでどうでもいい。
915 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 19:25:41 ] C99/C++のコメントを除去したかったので コードを書いたんだけどえらい遅い 改良するとしたらどの辺でしょうか? 最初非末尾再帰版で書いて 末尾再帰に書き直したのですが 相互再帰関数は通常最適化されないのですかね? 処理時間が通常の再帰版と同じで 250kbのファイル(5千行中4000行がコメント) を処理するのに100秒かかります コード(続く)
916 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 19:29:01 ] ;remove comment (define (remcom l) (define (test str lst) (if (< (length lst) (string-length str)) #f (let* ((a (string->list str)) (l (take lst (length a)))) (every eq? a l)))) (define (outcomment l res) (cond ((null? l) res) ((test "/*" l) (incomment (cddr l) res)) ((test "//" l) (inlinecomment (cddr l) res)) ((eq? #\' (car l)) (inquote #\' (cdr l) (cons #\' res))) ((eq? #\" (car l)) (inquote #\" (cdr l) (cons #\" res))) (else (outcomment (cdr l) (cons (car l) res))))) (define (incomment l res) (cond ((null? l) res) ((test "*/" l) (outcomment (cddr l) res)) (else (incomment (cdr l) res)))) (define (inquote sep l res) (cond ((null? l) res) ((eq? sep (car l)) (outcomment (cdr l) (cons sep res))) (else (inquote sep (cdr l) (cons (car l) res))))) (define (inlinecomment l res) (cond ((null? l) res) ((eq? #\newline (car l)) (outcomment (cdr l) res)) (else (inlinecomment (cdr l) res)))) (list->string (reverse (outcomment (string->list l) '()))))
917 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 20:18:56 ] >>915 test の中の (length lst)
918 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 20:21:17 ] コメントが現れる度string->listしてる所、 (test "/*" l)とかを (test `,(string->list "/*") l) にしとくとか。(test側も修正) それと、100秒掛かるって言われても判らんから 環境と処理系も書いて欲しいな
919 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 20:25:49 ] あ、`',(string->list "/*")にしないとだめだったかな 動かしてないから間違ってたらごめん
920 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:03:42 ] (define (test str) ;; Let Over Lambda (let ((l (string->list str))) (lambda (lst) ...))) (define test/* (test "/*")) (define test*/ (test "*/")) (define test// (test "//"))
921 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:19:19 ] lengthをやめたら、100秒が3秒になりました 長さはmaxで2と固定なので (if (or (not (pair? lst)) (not (pair? (cdr lst)))) #f ...) に変更しました また、string->listの箇所も修正するとさらに早くなりました (環境はGauche+cygwin) ありがとうございました!
922 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:24:16 ] 上の"/*"みたいな最終的にstring->listに掛かるようなやつって gaucheじゃ定数伝播してくれないのかな
923 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 12:29:59 ] 数値計算を主体でプログラムしてると あまり自分でマクロを作る場面に出くわさない on lispのマクロはそのまま使ったりするけど
924 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 12:52:12 ] こういうのはどうよ (define-syntax let/ec (syntax-rules () ((_ r b ...) (call/cc (lambda (r) b ...))))) わざとらしい例 (let/ec r (fold (lambda (x y) (if (= x 0) (r 0) (* x y))) 1 '(2 3 0 5)))
925 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 13:28:31 ] 何が?
926 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 17:44:08 ] いや、なんでもない
927 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 17:48:00 ] let/ccってのはPLTやGaucheにあるね
928 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 00:17:53 ] redditから ttp://www.google.com/search?hl=en&q=recursion
929 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 04:03:28 ] エロファイルのサンプルをダウンロードして来ました.このファイルはzipで圧縮されておりファイル名の末尾がアルファベットもしくは数字+拡張子zipになっており,展開すると拡張子が取れたディレクトリ名の中にファイル名+拡張子wmvのファイルが出現します. 例: aaaa0725a.zip, aaaa0725b.zip, aaaa0725c.zip, aaaa0725d.zip aaaa0725a/aaaa0725a.wmv aaaa0725b/aaaa0725b.wmv aaaa0725c/aaaa0725c.wmv aaaa0725d/aaaa0725d.wmv b0725-1.zip, b0725-2.zip, b0725-3.zip, b0725-4.zip b0725-1/b0725-1.wmv b0725-2/b0725-2.wmv b0725-3/b0725-3.wmv b0725-4/b0725-4.wmv で,このファイルを末尾がアルファベットの場合は a 数字の場合は 1 にまとめるという作業をLispで行う場合,Lisp脳ではどう考えますか? aaaa0725a/aaaa0725a.wmv /aaaa0725b.wmv /aaaa0725c.wmv /aaaa0725d.wmv b0725-1/b0725-1.wmv /b0725-2.wmv /b0725-3.wmv /b0725-4.wmv 教えてくださいエロい人
930 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 05:16:08 ] zshで unzip *.zip for d in *a; mv ${d%a}[bcd]/*.wmv $d for d in *1; mv ${d%1}[234]/*.wmv $d rmdir * 試してないけど。
931 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 05:18:15 ] > unzip *.zip 訂正 for f in *.zip; unzip $f
932 名前:デフォルトの名無しさん [2009/07/25(土) 09:45:41 ] MatzLispを搭載してるmfilerで展開&連番リネーム
933 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 18:25:06 ] MatzLispなんてLispはありません Lispと言うからにはS式とマクロがないと駄目です
934 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 19:28:09 ] lisp--
935 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 19:52:08 ] l4u…
936 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 20:07:36 ] AVRやPICで使えるSchemeってある?LEGO Mindstrom用は見つけたけどマイコン用は見つからなかった。
937 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 20:09:27 ] stalinでCコード吐かせてgccでコンパイルする
938 名前:929 mailto:sage [2009/07/25(土) 21:15:23 ] なんだ結局正規表現に頼るのか
939 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 21:19:55 ] こういう時のための正規表現だからね。 まぁ、正規表現に親を殺されて憎んでいるから絶対使いたくないとか、 そういう理由があるなら仕方ないかもしれんが。
940 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 21:50:57 ] 正規表現殺人事件 「私は見ました!! 彼はバックトラックに轢き殺されたんです!!」
941 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:10:15 ] オートマでした
942 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:47:25 ] >>936 Marc Feeleyの研究室で何年か前にPIC用Schemeコンパイラを作ってた人がいたと思う。
943 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:54:44 ] >>938 やりたければ SRE でも PEG でも使うがいい。 やろうとしてることがいかにもスクリプト言語的なので、 手段だってそれに見当ったものになるだけだろ。 そこに Lisp らしさを求めたところでナンセンスなだけだ。
944 名前:929 mailto:sage [2009/07/25(土) 23:30:41 ] >>943 > やりたければ SRE でも PEG でも使うがいい。 SRE S-expression Regular Expression PEG Parsing Expression Grammar ですね.勉強します. > やろうとしてることがいかにもスクリプト言語的なので、 はい,あえてこういう問題をLisperはどう考えるか知りたくてきいてみました. ありがとうございました.
945 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 01:33:50 ] >>944 というか、そもそもLisp族での回答が出てないじゃないか。 典型的なパターンだと、ディレクトリを探索する手続きに、 ファイルごとの処理を行う手続きを渡すのがLisp的だと思う。 文字列のマッチングとかは、SREとかPEGとかあるけど、 特別Lisp的に、ってのは無いんじゃない?
946 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 03:30:51 ] まぁ、質問が悪すぎたね。 物事を「無駄に難しく」解決したくてLispをやってる人なんて、 そう居ないわけだからさぁ。
947 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 05:04:52 ] だが、SICPの日本語は無駄に難しい。
948 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 06:05:22 ] 質問者の頭が悪すぎた
949 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 07:46:32 ] >>946 そうだったのか。おれは"物事を「無駄に難しく」解決したくてLispをやってる"と思ってた。 頭の体操のために開発された言語だと思っていたが間違っていたか。、
950 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 08:11:56 ] まぁ、間違ってるね。 言語としてのLispは、ラムダ算法の表現法として開発されたのであって、頭の体操の為ではないし、 「頭の体操」が主に指向するのは、物事を「無駄に難しく」解決することではなく「美しく」解決することだし、 (その美しさを理解or表現する力を身につけるのが「難しい」ということはあり得るけど) 句点のあとに読点つけるのは、正式な日本語としても、2chによく見られる崩しとしてもおかしいし。
951 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 08:38:17 ] 「。、」 は ↓こんな風に落ち込んでる人の顔文字だと解釈した。 。、 -
952 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:21:18 ] >>950 読点消し忘れたからってそんなに喜ぶなよ。 ラムダ算法の表現法として開発されたということはラムダ算法に無縁の人には いらない言語ということか納得できる答えだ。頭の体操の定義はおいといてい らない人には頭の体操以外のなんでもない。
953 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 09:38:13 ] > 言語としてのLispは、ラムダ算法の表現法として開発されたのであって、 リスト処理用の言語として作られたんであって、ラムダは用語以外関係ない。
954 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:25:17 ] >>952 何をムキになって、相手の言葉からできるだけ相手が辿り着いて欲しく無さそうな結論を見出す 中二病っぽいクソゲーを頑張ってるのかわからないけど、 最初に開発した人の目的なんて、その後の人々にはそこまで関係のあるものではないよ。 Unix開発したい人だけがCを使うわけでもなし。
955 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:27:58 ] あと、「いらない人には」って条件つけちゃったら何でもアリだよな。 板チョコから人命まで、「いらない人には価値を見出すことができない」のは共通でしょ?
956 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:33:29 ] あなたもわざわざ構いなさんなw
957 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:35:21 ] >>953 リスト処理用のFORTRANライブラリとして歩みだし、 ラムダ算法の表現を模索するうちにプログラミング言語となった。 といってもそれほど間違ってないと思う。
958 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:44:41 ] >>956 でも、そんな長くない文章でかなり凄いこと言いまくってて、つい反応してしまうだろうこれはw 「Xの定義はおいといて、X以外のなんでもない」って物言いも、かなりキてるし。 「頭の体操のために開発された言語」という話を「いらない人には頭の体操」まで一気に前線下げて、 それを鼻息のパワーアップでカバーしようとしてるのも、えらくシュールだし。 なんか変な資質あるぞ、この子w
959 名前:929 mailto:sage [2009/07/26(日) 10:55:16 ] なるほど,Lispにとってこういう問題は難しいのですね. Lisperと名乗る人も身近なものにはLispを使わない. ググったところで教科書の写経をするページしか見つからないわけですね.
960 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:12:44 ] おれがよく行くアニメ系板ならわんさかこーゆーのいるけど。 >>959 Lispに限らず他言語のスレ行っても「ファイラでやれ」「シェルでやれ」って反応が殆んどだと思うが。 あーでもrake使ってエロ画像整理とかはやってる人が稀にいるかもしれん。 正しく道具を使い分けるよう心がけてる人が多いのはどの辺だろうねぇ。
961 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:14:52 ] ttp://evalwhen.com/pregexp/index.html 正規表現も自前で実装するのが Lisp クオリティ
962 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:27:59 ] リストのリストをソートする機会があったので (define a '((0 1 2) (0 2 1) (1 0 2) (1 2 0) (2 0 1) (2 1 0))) C++のSTLみたく こんなのを書いてみたんだけど (define (listpred pred a b) (cond ((or (null? a) (null? b)) #f) (else (if (or (pred (car a) (car b)) (pred (car b) (car a))) (pred (car a) (car b)) (listpred pred (cdr a) (cdr b)))))) (sort a (pa$ listpred <)) (sort a (pa$ listpred >)) こういうのって既にあったりします? それか既存の関数の組み合わせでもっと楽に作れたりしませんかね
963 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:31:45 ] あ、比較関数をリスト用に合成するのだからこっちのほうがいいですね (define (listpred pred) (lambda (a b) (cond ((or (null? a) (null? b)) #f) (else (if (or (pred (car a) (car b)) (pred (car b) (car a))) (pred (car a) (car b)) ((listpred pred) (cdr a) (cdr b))))))) (sort a (listpred <)) (sort a (listpred >))
964 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:37:04 ] >>959 どういう過程を辿ってそういう結論に至ったのかは知らないけど、 別に難しくもないし、身近な用途にも使ってるよ。むしろ身近にしか使ってない。 某ネ実ゲーの武器の性能計算したりとか、もう日常感たっぷり。 ネット見ると結構そういうのあると思うんだけどな。 ニコニコのコメント抜き出したり、WinampをSchemeで操作したりしてる人とかいたよ。
965 名前:929 mailto:sage [2009/07/26(日) 11:40:01 ] > 正規表現も自前で実装するのが Lisp クオリティ 正規表現を必要としないのが Lisp クオリティと思ってた.
966 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:51:17 ] >>916 とかは正規表現では出来ない例 正規表現で出来ない問題を出せよ
967 名前:929 [2009/07/26(日) 11:58:49 ] >>964 > >>959 > どういう過程を辿ってそういう結論に至ったのかは知らないけど、 > 別に難しくもないし、身近な用途にも使ってるよ。むしろ身近にしか使ってない。 はい,945の方がおっしゃってるように ディレクトリを探索する手続きに,ファイルごとの処理を行う手続きを渡すというのは理解できるのですが ここで正規表現って発想ではなくリードマクロを使って...てのを期待してました.
968 名前:929 mailto:sage [2009/07/26(日) 11:59:36 ] >>966 > >>916 とかは正規表現では出来ない例 > 正規表現で出来ない問題を出せよ やりたいことはエロファイルの整理です.
969 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 12:04:17 ] エロファイルの整理がしたいんじゃなくて Lispのリードマクロを使った回答を知りたい、が正しいんじゃないの? その目的なら>>930-931 で回答が出てるんだから
970 名前:929 mailto:sage [2009/07/26(日) 12:10:38 ] やりたいことは,エロファイルの整理 知りたいことは,シェルスクリプトなどで簡単にできる問題を lisp脳はどう考えるかです.
971 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 12:17:12 ] シェルスクリプト使うよ
972 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 12:17:30 ] (define (a x) (let ((end (last x))) (cond ((isalpha end) 'place_a) ((isnum end) 'place_1) (else (error "tukareta"))))) (for-each a ero) 'placeの所はフォルダにおく処理
973 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 12:27:17 ] >>970 rename.pl(1)使います。
974 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 12:32:52 ] >>967 俺その>>945 。 リーダーマクロについて、何か勘違いをしてる気がする。 根本的に正規表現とは違う層の概念だよ。 独自の記法をS式にマッピングするだけ。 単に、正規表現以外の文字列のパターンマッチが知りたいのなら、 パーザコンビネータとかがそれ。上に出てるPEGとか。
975 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 12:56:46 ] >>958 あなたには頭の体操は「美しく」解決しなきゃいけないのかそれともそうではないのか。 「美しく」とはどういうことかなどを定義されることをお勧めします。そしてその後レス してください。
976 名前:929 mailto:sage [2009/07/26(日) 14:30:38 ] >>974 > リーダーマクロについて、何か勘違いをしてる気がする。 いえ,理解出来ていないというか,誤解しているのでしょう. だから,相手に対して勘違いをあたえる. > 根本的に正規表現とは違う層の概念だよ。 > 独自の記法をS式にマッピングするだけ。 ディレクトリ(ファイル)名のリストを作る.そのリストを読み込む際,リードマクロを使って処理をディスパッチする.のかなぁって考えました. > 単に、正規表現以外の文字列のパターンマッチが知りたいのなら、 > パーザコンビネータとかがそれ。上に出てるPEGとか。 文字列処理で正規表現使わない.リードマクロを使う.と言う発想じゃなくPEGを使うって発想するのですね.
977 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 14:44:38 ] >> リーダーマクロについて、何か勘違いをしてる気がする。 >いえ,理解出来ていないというか,誤解しているのでしょう. 勘違いして理解してるから誤解だろ。
978 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 15:06:02 ] >>976 リードマクロは表現をS式にマッピングする機能だって上で出てるだろうが。 書いてある表現のパースは必要なんだよ。 違う層の話が入り混じっててわけわかんなくなってるぞ。
979 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 15:20:13 ] まあ確かにcfgやreは無駄に難しいから 素朴な再帰下降パーサーを高階関数とかで改良していこうという方針は正しい気がする そして、Perlのような言語がそういう方針転換をするよりも 過去の成果物にとらわれないLispのほうが有利だと言えないこともない
980 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:08:54 ] 50以上レスが進んでるから何かと思えばずっと雑談か 暇だなおまいら
981 名前:デフォルトの名無しさん [2009/07/26(日) 19:53:39 ] 処理系何使ってるあたしはGauche。
982 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 20:40:58 ] /\___/ヽ /ノヽ ヽ、 / ⌒''ヽ,,,)ii(,,,r'''''' :::ヘ | ン(○),ン <、(○)<::| |`ヽ、 | `⌒,,ノ(、_, )ヽ⌒´ ::l |::::ヽl . ヽ ヽ il´トェェェイ`li r ;/ .|:::::i | /ヽ !l |,r-r-| l! /ヽ |:::::l | / |^|ヽ、 `ニニ´一/|^|`,r-|:「 ̄ / | .| | .| ,U(ニ 、)ヽ / | .| | .|人(_(ニ、ノノ
983 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 20:51:39 ] テキスト処理を主体としたいわゆる「スクリプト言語」的な使い方をするなら Gauche はやはり強いよなぁ。 日本語の扱いをちゃんとしているところがよい。 Ypsilon なんかはやたら高速なのがよい。 まぁ、用途によるんじゃね?
984 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 20:58:51 ] Gaucheとclisp、newlispを入れてる newlispは簡単にwindow出せたりして面白いよ
985 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 21:30:14 ] ベタで申し訳ないが、schemeの健全なマクロって必要なのか? 正直 ` , ,@ (gensym) だけのほうがスマートだし、変数捕捉されるのも考慮してこそマクロだと思うんだけどなぁ。 schemeの仕様作ってる人は何を心配してるんだろう。ユーザのこと心配してくれてるのかな。 (PGが人が使う用の為に作っちゃダメっていってたよ。)
986 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 21:30:36 ] ノシ clisp
987 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 21:35:59 ] 不健全なマクロはきたない。健全なマクロのほうが美しい。
988 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 21:54:42 ] ` gensym を必要としなくなれば シンボルやコンスが無い言語でもマクロが書けるようになるかもしれない
989 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 22:11:13 ] >>985 モジュール化が絡んでくるとそう単純な話ではない。 scheme と CL ではスコープのルールも若干違う。 健全性に固執しすぎなのは確かかもしれないけど、 Scheme 的な一貫性のためには必要だと思うよ。
990 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 22:21:20 ] >>985 scheme では同じ名前のシンボルは常に同じシンボルなので、 gensym では名前の衝突を本質的には回避できない。
991 名前:985 mailto:sage [2009/07/26(日) 22:28:07 ] なるほど。今まで馬鹿みたいに「うは、ペアeval apply ぐるぐる最強!」とか思ってたけど、 ことはそう単純じゃないのね。もうちょっと精進するよ。馬鹿みたいなこといってごめんね。
992 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 23:09:19 ] 純粋さよりも簡潔さを重んじるSchemeとしてはそれこそ シンプルな古典的マクロの上に保健的マクロを構築するアプローチのほうが合っていると思う R5RSのなかでもsyntax-rulesは浮いているように感じる
993 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 23:46:52 ] >シンプルな古典的マクロの上に保健的マクロを構築する 挫折した奴がここにおわす
994 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 23:52:29 ] >シンプルな古典的マクロの上に保健的マクロを構築する これをまじめにやろうとすると、言語の構文をほぼ全て上書きして 意味論を追加するってこと LISPだから可能なんだけど おれは挫折した
995 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:06:27 ] シンプルさを保つべきだって考えと現実問題を解決するときに少々の汚れ仕事を請け負っても良いの2派閥の間の溝だからなぁSchemeとCommonLISP
996 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 05:59:54 ] >シンプルな古典的マクロの上に保健的マクロを構築する Alex Shinn さんの chibi-scheme がそういうような方向性かな Syntactic Closure の上に Explicit Renaming と Syntax Rules を実装してる Syntax Rules はまだ動いてないところもあった気がするが ttp://synthcode.com/wiki/chibi-scheme
997 名前:デフォルトの名無しさん [2009/07/27(月) 08:13:36 ] CommonLisp(笑)、Scheme(笑) これからはF#の時代だからwww
998 名前:デフォルトの名無しさん [2009/07/27(月) 08:23:37 ] 名前に#が付く言語ってwindows以外のOSで動くの?
999 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 08:32:57 ] Monoでそれなりには動くらしいよ 使ったことないからよく知らんけど
1000 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 09:25:26 ] SML#があるじゃん
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。