krzysztof-w
5/23/2017 - 6:22 PM

Elmchemy article #2

Elmchemy article #2

module FizzBuzz exposing (fizzbuzz)

import List exposing (map, range)

{-| Fizzes the buzzes and buzzfizzes the fizz out of buzz

    fizzbuzz 1 7 == "1 2 Fizz 4 Buzz Fizz 7"
-}
fizzbuzz : Int -> Int -> String
fizzbuzz from to = 
  let fizzBuzz n = case (n % 3, n % 5) of
    (0, 0) -> "FizzBuzz"
    (0, _) -> "Fizz"
    (_, 0) -> "Buzz"
    _      -> toString n
  in List.range from to |> map (fizzBuzz >> toString) |> joinWords
  
  
joinWords : List String -> String
joinWords list = String.join " " list