1 名前:デフォルトの名無しさん [2007/04/20(金) 19:41:39 ] Lisp全般のスレです 過去スレ Part16: pc11.2ch.net/test/read.cgi/tech/1172404795/ Part15: pc10.2ch.net/test/read.cgi/tech/1151025773/ Part14: pc8.2ch.net/test/read.cgi/tech/1132275726/ Part13: pc8.2ch.net/test/read.cgi/tech/1115901841/ Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/ Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/ Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/ Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/ http://が多すぎるらしいので分割
929 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 10:04:41 ] 要素は3個だと思うが。
930 名前:デフォルトの名無しさん [2007/08/11(土) 11:22:21 ] >>928 >>929 ありがとうございます。 アトムと要素ってちがうんですか?
931 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 11:50:37 ] 一番外側のリストの要素って ((how) are)と((you) (doing so))とfarとnilの4個じゃないの? それとも要素数っていう場合最後のnilは数えない?
932 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 12:13:51 ] その最後の nil のみの () 空リストは通常要素ゼロと数えます。 リストの要素というのは通常 cons セルの数。 () = nil : 要素数ゼロ (1) = [ 1 | ] -> nil : 要素数 1 (1 2) = [ 1 | ] -> [ 2 | ] -> nil : 要素数 2 で、問題のやつは cons セル 3 つなので要素数 3。 [ ((how) are) | ] -> [ ((you) (dosing so))| ]-> [ FAR | ]-> NIL
933 名前:931 mailto:sage [2007/08/11(土) 12:35:56 ] >>932 なるほど〜 ありがとう
934 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 13:21:32 ] このばか者が!ワシに分かるようなプログラム言語にしないか!
935 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 13:34:04 ] 括弧だけなんだからわかりやすくて楽じゃん。 C++の難解さときたら・・・
936 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 13:57:52 ] やだやだforthくらいわかりやすくないとやだ
937 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 14:11:35 ] Lispを判りやすいと思う人の数>Forth(r
938 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 14:27:57 ] Python が一番読みやすい lisp は要素が横方向に膨らみすぎる
939 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 14:54:15 ] pyはなんか構文の後ろに:とか変なしるし付けないといかんのが嫌 pascalの.みたいにキモイ インデントだけで済むとか言って余計な事が多すぎる 結局括弧使ってるし
940 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 14:58:43 ] インデントベースでカッコのないlispってないの?
941 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 15:05:59 ] >>939 余計な事なんてそんなにないでしょ 普通に書いている分には十分に読みやすい ここで Python と lisp を比べてみるとカッコ関係なく lisp の読みにくさを痛感する ttp://ja.doukaku.org/
942 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 15:20:57 ] カッコなんて気にしない
943 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 15:27:08 ] そう言い残して彼は秋葉原へ行きました 額にはバンダナを巻いて
944 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 15:28:09 ] pythonは掲示板にコード貼れない悲しさがあるね
945 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 15:36:56 ] SRFI 49: indentation-sensitive syntax srfi.schemers.org/srfi-49/srfi-49.html
946 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 15:44:56 ] SRFIの範囲ってわけわからんな。 どうせならpython風フロントエンドでも定義すりゃいいのに。
947 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 16:08:08 ] >>941 ちょっとそこサンプル眺めただけだけど、pythonの構文規則て面倒だと思うよ。 何がダメで何が許されてるのか判りづらい。 よくこれで破綻しないなと逆に感心してしまった。 そのサイトのpythonサンプルって既成のライブラリ呼んでるのが殆どで 読みやすいかどうかは判らなかったけど、例えば ja.doukaku.org/33/lang/python/ これのライブラリ使ってない方のコードのyieldとかの掛かり先の判りにくさとか。 COBOLみたいにカラム表示のあるエディタじゃないと厳しい。 インデント位置がほんとにそれで合ってるのか疑ってしまわない? (LISPなら汚く書いてもppで大抵読めるコードになる)
948 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 16:45:01 ] じゃあエディタにカラム表示をつければいいんだ。 ・・・え? そういう問題?
949 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 17:23:53 ] Pythonは紙に印刷したら定規あてて読まないといかん マジで
950 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 17:45:22 ] Python はネスト深いとそうなるよなw とは言え、C++ や Ruby ほどには破綻してないと思うよ 両方ともパーサに優しくない上に C++ はもはや人間にすら読みづらい言語だし Ruby は一見読みやすいがパーサの細かい挙動に気をつけないとハマる あと Perl は…可読性とか考えたことあるのかなラリーってw 書いた時点でほぼパース済みの Lisp系はそういうことは無いわな エディタに括弧対応の表示がないと辛いのが難点か
951 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:13:04 ] Perlって、悪いところ上げればキリがないと思うけど、 でも日本で名が知れたハカーでPerl常用してる人多いよね(宮川さんとか小飼弾氏とかはてな伊藤さん)。 あれって惰性で使い続けてるのか、それとも使いやすいから 使ってるのかよくわからんね。すごい人にとってはPerlって いい言語なのかな。スレ違いでゴメンね。
952 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:37:05 ] perlは文系が好んで使う言語です 何故か
953 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:39:15 ] いくら「すごい人」が使っていても自分が嫌いなら気にすることはないと思う。
954 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 19:47:01 ] >>951 彼らは高次視覚野のニューロンがPerl向きに学習されている。 常人は真似しないほうが無難であろう。
955 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:07:13 ] Perlが常人向けじゃないなら、LispやSchemeはどーなんですか?
956 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:17:31 ] >>951 その連中は、派手に花火を打ち上げてるから目立つPerl者であって、 別にハッカーでもないだろ。
957 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:22:14 ] CPANがあるからじゃね?
958 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:39:54 ] Perlはできることが強力だからな、CPAN
959 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:41:02 ] 途中で書きこんじまった CPANも含めて。 多少の構文の違いなんて大した問題じゃないって人も多いし
960 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 20:44:26 ] 不感症なんですのね
961 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 21:09:35 ] CPANはいいよね・・・ RubyforgeとかCheese Shopなんて霞んで見えてしまうぐらいに ましてasdfなんて、ね
962 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 21:10:28 ] CPANのLISP版CLANて意味ないかな。 やっぱ実装が沢山あると難しいか。 ネットワーク系弱いし。名前負けしてるw
963 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 21:12:37 ] asdfでぐぐると痛そうなページがトップっすね
964 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:09:05 ] 末端消費プログラマばかりなんだな、ここは。
965 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:17:59 ] これ見れば判るけどネストが異様に深い ttp://ja.doukaku.org/tag/gauche/ 普通の言語ならガード節で処理するようなものも関数的にネストして処理するので深くなる また束縛でスコープが増える分深くなると言うのもある これはすべてのプログラムに影響することでそれを考えればPythonのyieldが判りづらい(判りづらいとは思わないけど) なんてほんの些細なこと 可読性と統一性ってのは別の所にあって他の言語はそこをある程度崩して読みやすさを補っているんではないかと思う Ruby読みにくいって言っている人が居るけど大抵の人はlispとRubyじゃRubyのほうが読みやすいというと思うよ だってみんなもlispのコードをカッコ数で読んでいるんじゃないでしょ? ttp://img264.imageshack.us/img264/1397/lispnd7.png
966 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:19:51 ] 気を落とすなよlisperども 頑張ってる連中もいるぞwww pc11.2ch.net/test/read.cgi/tech/1183396621/l50
967 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 22:50:43 ] 次スレからタイトルを実際に即して「RubyとPythonとLisp Scheme」にしろよ
968 名前:デフォルトの名無しさん mailto:sage [2007/08/11(土) 23:24:48 ] >>965 「大抵の人」は「Rubyのほうが読みやすいと思う」んだろ?まぁ、普通にそうなんじゃね。 その手の話は腐るほど見てきてるし、そう思う気持ちもわからんではないが、 何度も何度も同じ話を聞かされてるんで食傷気味。Matz が同じようなこといってるから Matz 日記でやると同志がいっぱいいると思うよ。
969 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:05:09 ] CRANがそれだろ。lispは実用のみ
970 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:42:49 ] >967 夏だからだよ
971 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 00:51:41 ] CLだとガード節相当はreturn-from 関数名とかで書けるけど schemeだとやっぱ継続?
972 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:01:57 ] サマースクールモードなのか
973 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:07:08 ] >965 Rubyは間違いなく読みやすい部類だよ。 ただ、パーザの挙動が判りづらいから 読んだ通りの動きになってくれてるとは限らないところが落とし穴。 Lisp系のパーザの挙動は見たままだろうw
974 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:42:01 ] >>971 (define-macro (return-from% name . result) `(,name ,@result)) (define-macro (block% name . body) `(call/cc (lambda (,name) ,@body))) (define-macro (define% name . body) (if (symbol? name) `(define ,name (block% ,name ,@body)) `(define ,(car name) (block% ,(car name) (lambda ,(cdr name) ,@body))))) (define% (test1 x) (if (not (number? x)) (return-from% func #f)) x) ;; (test1 1) => 1 (test1 'a) => #f まあ、つまり見たまま。
975 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:43:39 ] (return-from% test1 #f)) だった。 おれには衛生的なやつは無理。
976 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:48:46 ] (define% test2 (lambda (x) (if (not (number? x)) (return-from% test2 #f)) x)) (test2 1) => 1 (test2 'a) => #f うむ、ちゃんと動いてるな。 ただ、これだと普通の再帰ができなくなる。 nameを加工するかしないと。
977 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 02:07:48 ] >>974 (define test1 (call/cc (lambda (test1) (lambda (x) (if (not (number? x)) (test1 #f)) x)))) これって継続呼んだ時点でdefineの束縛フェーズに戻って test1が継続の返り値に書き換わるんじゃない?
978 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 02:17:19 ] >>968 例えば他の言語ならifの中で束縛を使いたいならifのスコープをその束縛のスコープとして適用して簡略化する lispの場合はifをletでくるむ形で束縛のスコープを設定する これはifのスコープとは別に束縛のスコープを記述できる分表現力は高いがネストが深くなり見た目も多少複雑になる 別にlispを全否定している訳じゃ無いしその分lispは力を得ることがで来ていると思う ただ他の言語より可読性が高いとは思わない >>973 人間コンパイラきたーw
979 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 02:26:02 ] return関係はshiroさんのが理解しやすい ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%81%aa%e3%81%9cScheme%e3%81%ab%e3%81%afreturn%e3%81%8c%e7%84%a1%e3%81%84%e3%81%ae%e3%81%8b 言語としてreturnが用意してあるのとreturnを作れるのは意味合いが違ってくると思う
980 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 02:40:53 ] >>977 あー間違った。call/ccをlambdaの中に入れといて。 どっちみち不完全だけどさ。
981 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 02:59:57 ] >>978 他のスレでやれば賛同者多数だと思うんだがね。 このスレに自分の意見に賛同しない人がいる限りとかいったら延々とネストだの括弧だのって話を繰り返す気なのか?
982 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 03:03:27 ] そういう意味のないレスならしないほうがいい
983 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 03:07:26 ] 元ネタからして意味がないので続かなくていいよ
984 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 03:30:04 ] 反応が小学生だなw
985 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 03:34:02 ] 相手が小学生レベルだからな。
986 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 03:39:44 ] Gauche本、まだ出ないのかなぁ
987 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 04:28:33 ] なんか伸びてると思ったらいつもの話題か。
988 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 04:44:03 ] 可読性、最強言語選手権、黒板 の三本立てでこのスレは成り立っています。
989 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 05:23:35 ] 次スレよろ
990 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 19:28:21 ] それなりに言っていることはわかる 慣れれば気にならなくなるが可読性が高いわけじゃないからな というか誰かLispの可読性が高いなんて言ったっけ?
991 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 20:04:49 ] 少なくとも俺には可読性高い。(ちゃんとインデントされていれば) 他の人間のことは知らんし、あまり興味無い。
992 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 20:15:00 ] インデントがあれば括弧はいらない!
993 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 20:26:41 ] 比較する条件次第、という面がLispは特に強い気はする。 インデントをいったんすべて無くして、エディタの力を何も借りられない条件下で 「さあ把握してみろ」みたいな勝負なら、そりゃあもう大惨敗だけど、 その両者がきちんと揃うと、途端に「そう一方的に負けてるもんでもない」って位置へ上がる、みたいな。 まぁ、客観的な話ではないけれども。
994 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 21:07:56 ] 括弧が多いと Emacs でカーソル移動が楽になる
995 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 21:10:20 ] インデントの話が出たんで、ちょっと質問なんですが、 Emacs + slime-mode で loop のインデントが次のようになります。 (loop as n = (progn (format t "~&Number: ") (parse-integer (read-line) :junk-allowed t)) while n do (format t "~&The square of ~D is ~D.~%" n (* n n))) これを下のようにするには、どう設定すれば良いでしょうか? (loop as n = (progn (format t "~&Number: ") (parse-integer (read-line) :junk-allowed t)) while n do (format t "~&The square of ~D is ~D.~%" n (* n n)))
996 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 21:38:59 ] 立てといた Lisp Scheme Part18 pc11.2ch.net/test/read.cgi/tech/1186922295/ >>995
997 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 21:43:56 ] 結局インデントで見ているんじゃPython批判できないじゃん
998 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:11:05 ] >>997 つかPythonも好きな奴多いと思うけど。 lambda埋め
999 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:50:37 ] でもRubyは嫌い
1000 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 22:55:37 ] 1000ならロト6で1等当選
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。