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://が多すぎるらしいので分割
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を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。