CommonLisp Scheme Part12
■ このスレッドは過去ログ倉庫に格納されています
0263sage
NGNG(rember* 'b '(a b c (a b c))) => (a c (a c))
これをcall/ccを使った大域脱出させたいです。
(rember* 'b '(a b c END d (a b c)) => (a c END (a b c))
しかし下のコードでは希望する動きをしません。
=> (rember* 'b (a c END (a c))
下のコードをつかって、うまく脱出する方法はあるでしょうか?
(define rember*
(lambda (a l)
(call/cc (lambda (escape)
(cond ((null? l) '())
((not-pair? (car l))
(cond ((eq? (car l) a)
(rember* a (cdr l)))
((eq? (car l) 'END)(escape (cons 'END '())))
(else (cons (car l) (rember* a (cdr l))))))
(else (cons (rember* a (car l))
(rember* a (cdr l)))))))))
■ このスレッドは過去ログ倉庫に格納されています