トップページ⇒tech
1001コメント280KB

Lisp Scheme Part17

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2007/04/20(金) 19:41:39
Lisp全般のスレです

過去スレ
Part16: http://pc11.2ch.net/test/read.cgi/tech/1172404795/
Part15: http://pc10.2ch.net/test/read.cgi/tech/1151025773/
Part14: http://pc8.2ch.net/test/read.cgi/tech/1132275726/
Part13: http://pc8.2ch.net/test/read.cgi/tech/1115901841/
Part12: http://pc8.2ch.net/test/read.cgi/tech/1100229366/
Part11: http://pc5.2ch.net/test/read.cgi/tech/1091456033/
Part10: http://pc5.2ch.net/test/read.cgi/tech/1075630259/
Part9: http://pc2.2ch.net/test/read.cgi/tech/1069594582/

http://が多すぎるらしいので分割
0951デフォルトの名無しさん2007/08/11(土) 19:13:04
Perlって、悪いところ上げればキリがないと思うけど、
でも日本で名が知れたハカーでPerl常用してる人多いよね(宮川さんとか小飼弾氏とかはてな伊藤さん)。
あれって惰性で使い続けてるのか、それとも使いやすいから
使ってるのかよくわからんね。すごい人にとってはPerlって
いい言語なのかな。スレ違いでゴメンね。
0952デフォルトの名無しさん2007/08/11(土) 19:37:05
perlは文系が好んで使う言語です
何故か
0953デフォルトの名無しさん2007/08/11(土) 19:39:15
いくら「すごい人」が使っていても自分が嫌いなら気にすることはないと思う。
0954デフォルトの名無しさん2007/08/11(土) 19:47:01
>>951
彼らは高次視覚野のニューロンがPerl向きに学習されている。
常人は真似しないほうが無難であろう。
0955デフォルトの名無しさん2007/08/11(土) 20:07:13
Perlが常人向けじゃないなら、LispやSchemeはどーなんですか?
0956デフォルトの名無しさん2007/08/11(土) 20:17:31
>>951
その連中は、派手に花火を打ち上げてるから目立つPerl者であって、
別にハッカーでもないだろ。
0957デフォルトの名無しさん2007/08/11(土) 20:22:14
CPANがあるからじゃね?
0958デフォルトの名無しさん2007/08/11(土) 20:39:54
Perlはできることが強力だからな、CPAN
0959デフォルトの名無しさん2007/08/11(土) 20:41:02
途中で書きこんじまった

CPANも含めて。
多少の構文の違いなんて大した問題じゃないって人も多いし
0960デフォルトの名無しさん2007/08/11(土) 20:44:26
不感症なんですのね
0961デフォルトの名無しさん2007/08/11(土) 21:09:35
CPANはいいよね・・・
RubyforgeとかCheese Shopなんて霞んで見えてしまうぐらいに
ましてasdfなんて、ね
0962デフォルトの名無しさん2007/08/11(土) 21:10:28
CPANのLISP版CLANて意味ないかな。
やっぱ実装が沢山あると難しいか。
ネットワーク系弱いし。名前負けしてるw
0963デフォルトの名無しさん2007/08/11(土) 21:12:37
asdfでぐぐると痛そうなページがトップっすね
0964デフォルトの名無しさん2007/08/11(土) 22:09:05
末端消費プログラマばかりなんだな、ここは。
0965デフォルトの名無しさん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
0966デフォルトの名無しさん2007/08/11(土) 22:19:51
気を落とすなよlisperども
頑張ってる連中もいるぞwww
http://pc11.2ch.net/test/read.cgi/tech/1183396621/l50

0967デフォルトの名無しさん2007/08/11(土) 22:50:43
次スレからタイトルを実際に即して「RubyとPythonとLisp Scheme」にしろよ
0968デフォルトの名無しさん2007/08/11(土) 23:24:48
>>965
「大抵の人」は「Rubyのほうが読みやすいと思う」んだろ?まぁ、普通にそうなんじゃね。

その手の話は腐るほど見てきてるし、そう思う気持ちもわからんではないが、
何度も何度も同じ話を聞かされてるんで食傷気味。Matz が同じようなこといってるから
Matz 日記でやると同志がいっぱいいると思うよ。

0969デフォルトの名無しさん2007/08/12(日) 00:05:09
CRANがそれだろ。lispは実用のみ
0970デフォルトの名無しさん2007/08/12(日) 00:42:49
>967
夏だからだよ
0971デフォルトの名無しさん2007/08/12(日) 00:51:41
CLだとガード節相当はreturn-from 関数名とかで書けるけど
schemeだとやっぱ継続?
0972デフォルトの名無しさん2007/08/12(日) 01:01:57
サマースクールモードなのか
0973デフォルトの名無しさん2007/08/12(日) 01:07:08
>965
Rubyは間違いなく読みやすい部類だよ。
ただ、パーザの挙動が判りづらいから
読んだ通りの動きになってくれてるとは限らないところが落とし穴。

Lisp系のパーザの挙動は見たままだろうw
0974デフォルトの名無しさん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
まあ、つまり見たまま。
0975デフォルトの名無しさん2007/08/12(日) 01:43:39
(return-from% test1 #f))
だった。
おれには衛生的なやつは無理。
0976デフォルトの名無しさん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を加工するかしないと。
0977デフォルトの名無しさん2007/08/12(日) 02:07:48
>>974
(define test1
(call/cc (lambda (test1)
(lambda (x) (if (not (number? x)) (test1 #f)) x))))

これって継続呼んだ時点でdefineの束縛フェーズに戻って
test1が継続の返り値に書き換わるんじゃない?
0978デフォルトの名無しさん2007/08/12(日) 02:17:19
>>968
例えば他の言語ならifの中で束縛を使いたいならifのスコープをその束縛のスコープとして適用して簡略化する
lispの場合はifをletでくるむ形で束縛のスコープを設定する
これはifのスコープとは別に束縛のスコープを記述できる分表現力は高いがネストが深くなり見た目も多少複雑になる

別にlispを全否定している訳じゃ無いしその分lispは力を得ることがで来ていると思う
ただ他の言語より可読性が高いとは思わない

>>973
人間コンパイラきたーw
0979デフォルトの名無しさん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を作れるのは意味合いが違ってくると思う
0980デフォルトの名無しさん2007/08/12(日) 02:40:53
>>977
あー間違った。call/ccをlambdaの中に入れといて。
どっちみち不完全だけどさ。
0981デフォルトの名無しさん2007/08/12(日) 02:59:57
>>978
他のスレでやれば賛同者多数だと思うんだがね。
このスレに自分の意見に賛同しない人がいる限りとかいったら延々とネストだの括弧だのって話を繰り返す気なのか?
0982デフォルトの名無しさん2007/08/12(日) 03:03:27
そういう意味のないレスならしないほうがいい
0983デフォルトの名無しさん2007/08/12(日) 03:07:26
元ネタからして意味がないので続かなくていいよ
0984デフォルトの名無しさん2007/08/12(日) 03:30:04
反応が小学生だなw
0985デフォルトの名無しさん2007/08/12(日) 03:34:02
相手が小学生レベルだからな。
0986デフォルトの名無しさん2007/08/12(日) 03:39:44
Gauche本、まだ出ないのかなぁ
0987デフォルトの名無しさん2007/08/12(日) 04:28:33
なんか伸びてると思ったらいつもの話題か。
0988デフォルトの名無しさん2007/08/12(日) 04:44:03
可読性、最強言語選手権、黒板
の三本立てでこのスレは成り立っています。
0989デフォルトの名無しさん2007/08/12(日) 05:23:35
次スレよろ
0990デフォルトの名無しさん2007/08/12(日) 19:28:21
それなりに言っていることはわかる
慣れれば気にならなくなるが可読性が高いわけじゃないからな
というか誰かLispの可読性が高いなんて言ったっけ?
0991デフォルトの名無しさん2007/08/12(日) 20:04:49
少なくとも俺には可読性高い。(ちゃんとインデントされていれば)
他の人間のことは知らんし、あまり興味無い。
0992デフォルトの名無しさん2007/08/12(日) 20:15:00
インデントがあれば括弧はいらない!
0993デフォルトの名無しさん2007/08/12(日) 20:26:41
比較する条件次第、という面がLispは特に強い気はする。
インデントをいったんすべて無くして、エディタの力を何も借りられない条件下で
「さあ把握してみろ」みたいな勝負なら、そりゃあもう大惨敗だけど、
その両者がきちんと揃うと、途端に「そう一方的に負けてるもんでもない」って位置へ上がる、みたいな。
まぁ、客観的な話ではないけれども。
0994デフォルトの名無しさん2007/08/12(日) 21:07:56
括弧が多いと Emacs でカーソル移動が楽になる
0995デフォルトの名無しさん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)))
0996デフォルトの名無しさん2007/08/12(日) 21:38:59
立てといた
Lisp Scheme Part18
http://pc11.2ch.net/test/read.cgi/tech/1186922295/


>>995
0997デフォルトの名無しさん2007/08/12(日) 21:43:56
結局インデントで見ているんじゃPython批判できないじゃん
0998デフォルトの名無しさん2007/08/12(日) 22:11:05
>>997
つかPythonも好きな奴多いと思うけど。

lambda埋め
0999デフォルトの名無しさん2007/08/12(日) 22:50:37
でもRubyは嫌い
1000デフォルトの名無しさん2007/08/12(日) 22:55:37
1000ならロト6で1等当選
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。