carをつかわずにリストの先頭要素を取り出す
@baal5084さんの出題
スキームクーイズ!さて突然ですがここで Schemer の皆さんに問題です。 Q1. リストの最初の要素を car と list-ref を使わず取り出してください。
http://twitter.com/baal5084/status/8226643131
@athos0220さんの模範解答(http://twitter.com/athos0220/status/8227286234)
(apply (lambda (x . _) x) lst)
自分もやってみた
(define (my-car lst) (set-cdr! lst '()) (apply (lambda (x) x) lst))
リストをぶっ壊すとかちょっとありえない。2度とcdrできないし
ということで元のリストが壊れないようにしてみた
(define (my-car lst) (let ((temp (append lst '()))) (set-cdr! temp '()) (apply (lambda (x) x) temp)))