Scheme手習い
自分の処理系でLandOfLispを動かしてみようと奮闘中。 でも define の使い方がちょっとずつ違う。。。 Scheme手習いと違うので混乱気味。 ;;land of lisp P13 (define guess-my-number () (ash (+ *small* *big*) -1)) ;;https://github.com/shirok/Gauche-L…
Scheme手習いの > が 自分の処理系でStackOverFlowになってしまうのです。コードはこんな感じです。 ;;p61 (define sub1 (lambda (n) (- n 1))) ;;p75 (define > (lambda (n m) (cond ((zero? n) #f) ((zero? m) #t) (else (> (sub1 n) (sub1 m)))))) (> 100…
MyLisp(仮称)の作成中。です。 https://github.com/moremagic/MyLisp/wiki lambda が二回続けてくるなんて想像もしてなかった。 結構悩んだ挙句、lambda 周りの処理を大きく修正。lambda が出現したときのみ環境変数から展開するといいのかな。 applyだけし…
MyLisp(仮称)の作成中。です。 https://github.com/moremagic/MyLisp/wikiScheme手習いの no-nums がどうも動かなかったのでずーっと悩んでました。 ※ 2,3日ほっといたのは内緒w isNumber? の評価前にapplyしていないのが原因でした。 public Sexp eval(…
number? って基本関数なんだね。 で、基本関数ってなんだろう? Scheme 処理系で実装されている関数てことかしら? (define no-nums (lambda (lat) (cond ((null? lat) '()) ((number? (car lat)) (no-nums (cdr lat))) (else (cons (car lat) (no-nums (cdr…
pick (define pick (lambda (n lat) (cond ((null? lat) '()) ((= 1 n) (car lat)) (else (pick (- n 1) (cdr lat)))))) (pick 4 '(aa bb cc ddd ee ff)) ;ddd 答えと比べてみると 最終条件が zero? だなぁ。 あー 掟があったね。掟を守って書き直し。pick (…
member? は lat? が #f になる場合はすべてのS式に対して評価されない 例えばこんな感じ。 (member? 'aaa '(bbaab ccc (ddd bbb aaa) bbb)) ; #f member? を memberX? として再定義してみた。 (define memberX? (lambda (a lat) (cond ((null? lat) false) (…
書いてみました。multirember (define multirember (lambda (a lat) (cond ((null? lat) '()) ((eq? a (car lat)) (multirember a (cdr lat))) (else (cons (car lat) (multirember a (cdr lat))))))) ;(multirember 'aaa '(bbb aaa vvv ccc aaa bbb)) multi…
パッと思いついた感じで特に問題なくかけた。ただ、思いつきをメモして、晩酌後にやるので ちょっとしたところで結構時間を食ってしまう。勉強するときはお酒 cons しちゃ駄目ね。 (define insertR (lambda (new old lat) (cond ((null? lat) '()) ((eq? old…
P15 lat?を書いてみてくださいという問題。 とりあえず先のページを見ないでどれだけかけるか挑戦してみました (define atom? (lambda (x) (and (not (pair? x)) (not (null? x))))) (define (lat? n) (cond ((atom? n) true) ((null? n) true) (else (and (…