GaucheでFizzBuzzその2

前に作った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式を適用していっている.

コメントする