Skip to content

Instantly share code, notes, and snippets.

@wjlroe
Last active October 21, 2015 16:35
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 wjlroe/108fc86da49824bed7da to your computer and use it in GitHub Desktop.
Save wjlroe/108fc86da49824bed7da to your computer and use it in GitHub Desktop.
This is very silly
let rangeInternal = x: y: c: if x == y then c ++ [x] else rangeInternal (builtins.add x 1) y (c ++ [x]);
range = x: y: if builtins.lessThan x y then rangeInternal x y [] else rangeInternal y x [];
modulo = x: y: builtins.sub x (builtins.mul (builtins.div x y) y);
fizz = x: modulo x 3 == 0;
buzz = x: modulo x 5 == 0;
fizzbuzz = x: fizz x && buzz x;
fizzBuzzString = x: if fizzbuzz x then "FizzBuzz" else
if fizz x then "Fizz"
else if buzz x then "Buzz"
else x;
in (map fizzBuzzString) (range 1 100)
% nix-instantiate --strict --eval-only fizzbuzz.nix
[ 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