fork(1) download
  1. type FizzBuzz = { n: int; s: string } with
  2. member x.gizz = x.update(7, "Gizz")
  3. member x.buzz = x.update(5, "Buzz")
  4. member x.update(m, s) = { x with s = x.s + if x.n % m = 0 then s else "" }
  5. override x.ToString() =
  6. if x.s = "" then string x.n else x.s
  7.  
  8. let wrap n = { n = n; s = "" }
  9.  
  10. type System.Int32 with
  11. member x.fizz = wrap(x).update(3, "Fizz")
  12. member x.buzz = wrap(x).update(5, "Buzz")
  13.  
  14. let p = printfn "%O"
  15.  
  16. p 1 .fizz.buzz // 1
  17. p 3 .fizz.buzz // Fizz
  18. p 5 .fizz.buzz // Buzz
  19. p 15 .fizz.buzz // FizzBuzz
  20. p 997 .fizz.buzz // 997
  21. p 7 .fizz.buzz.gizz // Gizz
  22. p 21 .fizz.buzz.gizz // FizzGizz
  23. p 35 .fizz.buzz.gizz // BuzzGizz
  24. p 105 .fizz.buzz.gizz // FizzBuzzGizz
  25. p 105 .fizz.gizz.buzz // FizzGizzBuzz
  26.  
Success #stdin #stdout 0.02s 132672KB
stdin
Standard input is empty
stdout
1
Fizz
Buzz
FizzBuzz
997
Gizz
FizzGizz
BuzzGizz
FizzBuzzGizz
FizzGizzBuzz