マッピング?
なんとなくソースコード書いてました。
で、mapって出てきたのでちょっと困惑してる。
元々Java触ってるのでmapってコレクションなイメージ。
mapとは
リストの各要素に同じ操作をする関数です。 操作を施したリストを返す map と、副作用を目的とする for-each の2つが R5RS で定義されています。
高階関数
らしいです。ってことで実際に以下を実行。
(define (double ls) (map (lambda (x) (* x 2)) ls))
これってつまり下と同じだよね?
(define (double2 ls) (cond ((null? ls) '()) (else (cons (* (car ls) 2) (double2 (cdr ls))))))
やっぱ再帰気持ちいいね!
リストの各要素に同じ操作をするって、へーってなりますね。
なんかイメージしにくいけど…。しかも、可変長みたいだし。
複雑怪奇!!