2015/05/24

再帰で数を数える

scheme再帰でリスト処理してる時に数を数えるには別に変数つけなくちゃいけないのかなって考えてました。
The Little Schemer読んでたら以下のようなコードが出てきました。
null?で0を返せばよかったのね。
そして数を数えたい処理が来るたびに1加算していけば数えられると。
面白いなー

(define occur
  (lambda (a lat)
    (cond
     ((null? lat) 0)
     (else (cond
            ((eq? (car lat) a)
             (add1 (occur a (cdr lat))))
            (else
             (occur a (cdr lat))))))))

The Little Schemer

The Little Schemer


© 2022 wat-aro