Skip to content

Instantly share code, notes, and snippets.

@gustavofranke

gustavofranke/FizzBuzz.hs

Last active Nov 11, 2019
Embed
What would you like to do?
module FizzBuzz where
data Foo = Fizz | Buzz | FizzBuzz | Neither Int
instance Show Foo where
show Fizz = "Fizz"
show Buzz = "Buzz"
show FizzBuzz = "FizzBuzz"
show (Neither int) = show int
multOf3 :: Int -> Bool
multOf3 n = n `mod` 3 == 0
multOf5 :: Int -> Bool
multOf5 n = n `mod` 5 == 0
multOf3And5 :: Int -> Bool
multOf3And5 n = (multOf3 n) && (multOf5 n)
mkFoo :: Int -> Foo
mkFoo int
| multOf3And5 int = FizzBuzz
| multOf5 int = Buzz
| multOf3 int = Fizz
| otherwise = Neither int
program :: [Foo]
program = map mkFoo [1..100]
main = mapM_ print program
-- sequence (map (\x -> putStrLn (show $ mkFoo x)) [1..100])
-- $ runhaskell FizzBuzz.hs
-- 1
-- 2
-- Fizz
-- 4
-- Buzz
-- Fizz
-- 7
-- 8
-- Fizz
-- Buzz
-- 11
-- Fizz
-- 13
-- 14
-- FizzBuzz
-- 16
-- 17
-- Fizz
-- 19
-- Buzz
-- Fizz
-- 22
-- 23
-- Fizz
-- Buzz
-- 26
-- Fizz
-- 28
-- 29
-- FizzBuzz
-- 31
-- 32
-- Fizz
-- 34
-- Buzz
-- Fizz
-- 37
-- 38
-- Fizz
-- Buzz
-- 41
-- Fizz
-- 43
-- 44
-- FizzBuzz
-- 46
-- 47
-- Fizz
-- 49
-- Buzz
-- Fizz
-- 52
-- 53
-- Fizz
-- Buzz
-- 56
-- Fizz
-- 58
-- 59
-- FizzBuzz
-- 61
-- 62
-- Fizz
-- 64
-- Buzz
-- Fizz
-- 67
-- 68
-- Fizz
-- Buzz
-- 71
-- Fizz
-- 73
-- 74
-- FizzBuzz
-- 76
-- 77
-- Fizz
-- 79
-- Buzz
-- Fizz
-- 82
-- 83
-- Fizz
-- Buzz
-- 86
-- Fizz
-- 88
-- 89
-- FizzBuzz
-- 91
-- 92
-- Fizz
-- 94
-- Buzz
-- Fizz
-- 97
-- 98
-- Fizz
-- Buzz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment