Skip to content

Instantly share code, notes, and snippets.

@possiblywrong
Created May 23, 2014 08:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save possiblywrong/e252ecd7ac79e4bbe739 to your computer and use it in GitHub Desktop.
Save possiblywrong/e252ecd7ac79e4bbe739 to your computer and use it in GitHub Desktop.
Codata FizzBuzz
import Data.Function
fizzBuzz n | n `mod` 15 == 0 = "FizzBuzz"
| n `mod` 5 == 0 = "Buzz"
| n `mod` 3 == 0 = "Fizz"
| otherwise = show n
fzb = fix (\x acc -> (fizzBuzz acc):(x (acc+1))) 1
-- take 100 fzb
-- ["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"]
@possiblywrong
Copy link
Author

Why stop at 100, when you can have the infinite sequence ;-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment