Lisp Scheme Part17at TECH
Lisp Scheme Part17 - 暇つぶし2ch968:デフォルトの名無しさん
07/08/11 23:24:48
>>965
「大抵の人」は「Rubyのほうが読みやすいと思う」んだろ?まぁ、普通にそうなんじゃね。

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



969:デフォルトの名無しさん
07/08/12 00:05:09
CRANがそれだろ。lispは実用のみ

970:デフォルトの名無しさん
07/08/12 00:42:49
>967
夏だからだよ

971:デフォルトの名無しさん
07/08/12 00:51:41
CLだとガード節相当はreturn-from 関数名とかで書けるけど
schemeだとやっぱ継続?

972:デフォルトの名無しさん
07/08/12 01:01:57
サマースクールモードなのか

973:デフォルトの名無しさん
07/08/12 01:07:08
>965
Rubyは間違いなく読みやすい部類だよ。
ただ、パーザの挙動が判りづらいから
読んだ通りの動きになってくれてるとは限らないところが落とし穴。

Lisp系のパーザの挙動は見たままだろうw

974:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/12 01:43:39
(return-from% test1 #f))
だった。
おれには衛生的なやつは無理。

976:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/12 02:07:48
>>974
(define test1
(call/cc (lambda (test1)
(lambda (x) (if (not (number? x)) (test1 #f)) x))))

これって継続呼んだ時点でdefineの束縛フェーズに戻って
test1が継続の返り値に書き換わるんじゃない?

978:デフォルトの名無しさん
07/08/12 02:17:19
>>968
例えば他の言語ならifの中で束縛を使いたいならifのスコープをその束縛のスコープとして適用して簡略化する
lispの場合はifをletでくるむ形で束縛のスコープを設定する
これはifのスコープとは別に束縛のスコープを記述できる分表現力は高いがネストが深くなり見た目も多少複雑になる

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

>>973
人間コンパイラきたーw

979:デフォルトの名無しさん
07/08/12 02:26:02
return関係はshiroさんのが理解しやすい
URLリンク(practical-scheme.net)

言語としてreturnが用意してあるのとreturnを作れるのは意味合いが違ってくると思う

980:デフォルトの名無しさん
07/08/12 02:40:53
>>977
あー間違った。call/ccをlambdaの中に入れといて。
どっちみち不完全だけどさ。

981:デフォルトの名無しさん
07/08/12 02:59:57
>>978
他のスレでやれば賛同者多数だと思うんだがね。
このスレに自分の意見に賛同しない人がいる限りとかいったら延々とネストだの括弧だのって話を繰り返す気なのか?

982:デフォルトの名無しさん
07/08/12 03:03:27
そういう意味のないレスならしないほうがいい

983:デフォルトの名無しさん
07/08/12 03:07:26
元ネタからして意味がないので続かなくていいよ

984:デフォルトの名無しさん
07/08/12 03:30:04
反応が小学生だなw

985:デフォルトの名無しさん
07/08/12 03:34:02
相手が小学生レベルだからな。

986:デフォルトの名無しさん
07/08/12 03:39:44
Gauche本、まだ出ないのかなぁ

987:デフォルトの名無しさん
07/08/12 04:28:33
なんか伸びてると思ったらいつもの話題か。

988:デフォルトの名無しさん
07/08/12 04:44:03
可読性、最強言語選手権、黒板
の三本立てでこのスレは成り立っています。

989:デフォルトの名無しさん
07/08/12 05:23:35
次スレよろ

990:デフォルトの名無しさん
07/08/12 19:28:21
それなりに言っていることはわかる
慣れれば気にならなくなるが可読性が高いわけじゃないからな
というか誰かLispの可読性が高いなんて言ったっけ?

991:デフォルトの名無しさん
07/08/12 20:04:49
少なくとも俺には可読性高い。(ちゃんとインデントされていれば)
他の人間のことは知らんし、あまり興味無い。

992:デフォルトの名無しさん
07/08/12 20:15:00
インデントがあれば括弧はいらない!

993:デフォルトの名無しさん
07/08/12 20:26:41
比較する条件次第、という面がLispは特に強い気はする。
インデントをいったんすべて無くして、エディタの力を何も借りられない条件下で
「さあ把握してみろ」みたいな勝負なら、そりゃあもう大惨敗だけど、
その両者がきちんと揃うと、途端に「そう一方的に負けてるもんでもない」って位置へ上がる、みたいな。
まぁ、客観的な話ではないけれども。

994:デフォルトの名無しさん
07/08/12 21:07:56
括弧が多いと Emacs でカーソル移動が楽になる

995:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/08/12 21:38:59
立てといた
Lisp Scheme Part18
スレリンク(tech板)


>>995


997:デフォルトの名無しさん
07/08/12 21:43:56
結局インデントで見ているんじゃPython批判できないじゃん

998:デフォルトの名無しさん
07/08/12 22:11:05
>>997
つかPythonも好きな奴多いと思うけど。

lambda埋め

999:デフォルトの名無しさん
07/08/12 22:50:37
でもRubyは嫌い

1000:デフォルトの名無しさん
07/08/12 22:55:37
1000ならロト6で1等当選

1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch