MyLisp(仮称) で no-nums がやっと動いた。
MyLisp(仮称)の作成中。です。
https://github.com/moremagic/MyLisp/wiki
Scheme手習いの no-nums がどうも動かなかったのでずーっと悩んでました。
※ 2,3日ほっといたのは内緒w
isNumber? の評価前にapplyしていないのが原因でした。
public Sexp eval(Cell cell, Map<String, Sexp> env) throws FunctionException { if(cell.getCdr().length != 1){ throw new FunctionException("number?: expects " + cell.getCdr().length + " argument"); } return Atom.newAtom(MyLisp.apply(cell.getCdr()[0], env) instanceof AtomNumber); }
実行してみると。。。
(define no-nums (lambda (lat) (cond ((null? lat) '()) ((number? (car lat)) (no-nums (cdr lat))) (else (cons (car lat) (no-nums (cdr lat))))))) (no-nums '(1 2 3 h a c 4 k 5 e 6 r)) ;(h a c k e r)
やったね。
煮詰まったらしばらく離れるといいみたい。