Lisp Scheme Part41 (855レス)
上下前次1-新
386: 2021/05/25(火)18:47 ID:JJYQeYh+(1/2) AAS
pというprocedureが何回呼び出されたかを出力したいと思って以下のコードを書きましたが、意図通り動きません。
どうすればいいですか?
(define (cube x) (* x x x))
(define (p x) (- (* 3 x) (* 4 (cube x))))
(define (count_p angle n)
(if (not (> (abs angle) 0.1))
n
(p (count_p (/ angle 3.0) (+ n 1)))))
387: 2021/05/25(火)18:50 ID:JJYQeYh+(2/2) AAS
あ、分かりました。
388: 2021/05/25(火)19:30 ID:xQ/lxTUk(1) AAS
そうか
389(1): 2021/06/28(月)10:43 ID:TRKsA7C/(1/3) AAS
Schemeで
(newline)
(display 1.0)
のように複数の文?をつなげて実行することができます。
x が正のときに (newline) と (display 1.0) を続けて実行するようにするにはどのように記述すればいいのでしょうか?
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なだけで数値をシンボルで実装した処理系もあるかもしれん
上下前次1-新書関写板覧索設栞歴
あと 440 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.011s