前に作ったFizzBuzzをもうちょっとSchemeぽくしてみる.
以前は「関数型言語⇒再帰呼び出し」と思ってたので,再帰呼び出しで実装したけど,mapとか使えばさらにすっきり書ける.
というわけで.
#!/usr/bin/env gosh (use srfi-1) (define (fizzbuzz max) (map (lambda (x) (cond [(= (modulo x 15) 0 ) "FizzBuzz"] [(= (modulo x 3) 0 ) "Fizz"] [(= (modulo x 5) 0 ) "Buzz"] [else x] ) ) (iota max 1) ) ) (define (main args) (print (fizzbuzz 30)) )
1から始まるmax個のリストをiotaで作り,それの各要素に対してmapでlambda式を適用していっている.