らんだむな記憶

blogというものを体験してみようか!的なー

はぢめてのHaskell(9)

はぢめてのHaskell(6) - らんだむな記憶をもう少しだけマシにしたい。
Recursion - Learn You a Haskell for Great Good!くらいまで眺めたのでその知識で。

[prime3.hs]

prime :: Int -> Bool
prime n
    | n <= 1    = False
    | otherwise = prime_with_i n 2
    where prime_with_i n i
        | i >= n          = True
        | n `mod` i == 0  = False
        | otherwise       = prime_with_i n (i+1)

などと書いてみて、

Prelude> :l prime3
[1 of 1] Compiling Main             ( prime3.hs, interpreted )
Ok, modules loaded: Main.
*Main> [n | n <- [1..100], prime(n)]
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]

という感じで。なんかすこぶる汚いように感じるんだがなぁ...。

where bindingの代わりにlet bindingでも書いてみる。うーん( ゜- ゜)
[prime4.hs]

prime :: Int -> Bool
prime n
    | n <= 1    = False
    | otherwise =
        let prime_with_i n i
            | i >= n          = True
            | n `mod` i == 0  = False
            | otherwise       = prime_with_i n (i+1)
        in prime_with_i n 2