module Raindrops type ResultState = (bool * string) let applyStep factor str n rs = if n % factor = 0 then (true, ((rs |> snd) + str)) else rs let convert (number: int): string = let result = (false, "") |> applyStep 3 "Pling" number |> applyStep 5 "Plang" number |> applyStep 7 "Plong" number if result |> fst then result |> snd else string number