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)
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を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。