ACL(3) 3.7 マッピング関数
Common Lispには、map系関数が色々あるみたい。
mapcar
mapcarはSchemeで言う所のmap。
maplist
maplistは、carの代わりにcdr(リスト?)を取るmap。
(maplist #'(lambda (x) x) '(a b c)) ;((A B C) (B C) (C))
うは、便利そうだ。
Schemeだと、srfi-1のpair-fold-rightが似た感じで使える。
(pair-fold-right cons '() '(a b c)) ; ((a b c) (b c) (c))
pair-fold-rightはステキだ!!
maplistのSchemeバージョンpair-map-rightを作ってみる。
(define (pair-map-right f l) (if (null? l) '() (cons (f l) (pair-map-right f (cdr l))))) (pair-map-right values '(a b c)) ; ((a b c) (b c) (c))
マイライブラリに追加しとこう。