Lisp Scheme Part41 (855レス)
上下前次1-新
390: 2021/06/28(月)10:44 ID:TRKsA7C/(2/3) AAS
>>389
(if (< 0 x) …
と if を使いたいです。
391(1): 2021/06/28(月)11:02 ID:PxTgcihw(1/2) AAS
(if (< 0 x) (begin (newline) (display 1.0)))
392(1): 2021/06/28(月)11:03 ID:7XtL7Dy7(1) AAS
(if (< 0 x)
((lambda ()
(newline)
(display 1.0))))
393: 2021/06/28(月)14:39 ID:TRKsA7C/(3/3) AAS
>>391-392
ありがとうございました。
394: 2021/06/28(月)20:21 ID:3DnBzo4y(1) AAS
condでいい
(cond ((< 0 x) (newline) (display 1.0)))
395: 2021/06/28(月)21:54 ID:PxTgcihw(2/2) AAS
今度でいい?
396: 2021/06/29(火)12:31 ID:aO3q0Gho(1/2) AAS
implicit progn(begin)が欲しいならwhenとunlessを積極的に使おう
397: 2021/06/29(火)12:46 ID:aO3q0Gho(2/2) AAS
色んな書き方が出来るからこそ、most specificなものを使おう
398: 2021/06/29(火)13:29 ID:0N5v+m2R(1) AAS
二年前から、どうでもいい駄文が多すぎだな。
399: 2021/06/29(火)17:27 ID:cKUJRDcK(1) AAS
へーじゃあ君は2年間何してたの
400: 2021/06/29(火)18:52 ID:yETyFiIt(1) AAS
lispの質問が減って自己紹介みたいな駄文が多いんだよ
401: 2021/06/30(水)02:43 ID:HrMy06Ib(1) AAS
結局 most specific なものは何だろう
402: 2021/06/30(水)03:40 ID:hbO/nBwY(1) AAS
when でいいんじゃね
403: 2021/07/07(水)05:18 ID:Jk8/Aq6G(1) AAS
stalin って今も最速?
404: 2021/07/07(水)20:28 ID:Kq6g4muF(1) AAS
スターリンは残酷に最適化するからな
405: 2021/07/07(水)23:24 ID:690XxCxv(1) AAS
プログラムがr4rsで記述できていてシングルスレッドしばりの競争ならいまでも速い可能性はあるだろうな
だれか追試してくれよ
406: 2021/07/11(日)18:50 ID:aa3AN28M(1/2) AAS
(eq? '(a b c) (list 'a 'b 'c))
を実行すると
#f
となるのはなぜでしょうか?
407(1): 2021/07/11(日)19:31 ID:19O1KSs3(1) AAS
eq?はメモリ上の実体が同一かどうかを返すので、値を比較したかったらequal?を使えばいいよ
408: 2021/07/11(日)20:25 ID:aa3AN28M(2/2) AAS
>>407
ありがとうございました。
409: 2021/07/12(月)20:42 ID:O01P9WLY(1) AAS
named let使おうと思ったらCommon lispには無かった
410: 2021/07/12(月)22:45 ID:u5zIJQm8(1) AAS
(let loop ((n 10)) (if (> n 0) (loop (- n 1)) #t))
↓
(((lambda (loop) (set! loop (lambda (n) (if (> n 0) (loop (- n 1)) #t))) loop) 'dummy-label) 10)
こういう仕組みだからCLで書けなくもないと思うけど
411: 2021/07/12(月)23:10 ID:eka9NNGK(1) AAS
現代のlispハッカーはみんなloopマクロ使ってるよ
412(1): 2021/07/13(火)08:34 ID:egse1qJT(1) AAS
named-lambdaならalexandriaにある
413(1): 2021/07/13(火)10:27 ID:A078Hhon(1) AAS
Schemeで、
(+ '3 3)
を評価すると
6
が返ります。
'3 は「3」というシンボルを表わすのではないんですか?
414: はちみつ餃子 ◆8X2XSCHEME 2021/07/13(火)11:05 ID:jDPJbhfl(1) AAS
>>413
クウォートは評価を抑制するという仕組み。
データ (S式) の世界がプログラムの世界にマッピングされるときにデータの世界のままで留め置く感じ。
識別子はデータの世界ではシンボルなので、(変数として) 評価しなければシンボル自体となる。
3 はデータの世界でも数値の 3 であり、数値はプログラムの世界で評価すると
それ自体になるという自己評価 (self-evaluating) という規則の対象なので
3 はクウォートを付けても付けなくても評価結果は数値の 3 。
ちなみにベクタリテラルが自己評価の対象になるかどうかは変更があったので注意が必要。
R5RS/R6RS では自己評価の対象ではないのでクウォートが必要だが R7RS では自己評価になる。
まあほとんどの処理系は適当に許容したりもするんだけど。
415: 2021/07/13(火)16:32 ID:NGIJbx4Y(1) AAS
number?で#tなだけで数値をシンボルで実装した処理系もあるかもしれん
416: はちみつ餃子 ◆8X2XSCHEME 2021/07/13(火)17:10 ID:QSkHhbzy(1) AAS
小さい数値はヒープアロケーションせずにワードに詰め込む (ことで GC 削減して高速化を図る)
ような実装が一般的だったり、同じ内容の文字列リテラルを統合したりすることがある。
eq? が数値や文字列について処理系依存になっているのは
おそらくそういった最適化を許すための配慮なんだけど、
処理が遅くなってでも一貫した扱いをするというデザインを選んだなら
内部的に数値とシンボルと統合することも選択肢としてはあるかもね。
そうしてもユーザー視点ではたいして得なことはないんだけど、
アプリケーションに組み込んで拡張用言語として使うとか
だったらアプリケーション側の事情と馴染みやすいかどうかみたいな視点もあるし。
417: 2021/07/13(火)19:58 ID:tejz1RXC(1) AAS
数字はreadした時点でnumberになる
それをquoteしてもnumberのまま
quoteするとはevalされないということだ
もちろんnumberをevalしてもnumberのままだ
418: 2021/07/14(水)06:57 ID:O4vE2Kew(1) AAS
あっそうか
末尾再帰が仕様にないからloopを使うようになってるのかな?
419: 2021/07/15(木)04:52 ID:eqEigNI9(1/2) AAS
逆やね末尾再帰でloopを代替できるからイキって仕様からloopを消したったのがschemeやからユーザーもイキるやで
上下前次1-新書関写板覧索設栞歴
あと 436 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.025s