IokeでFizzBuzzその2

IokeでFizzBuzz - paz3のおもいつき の続き。

まだやってんのか!

ええ、やってますw

fizzbuzz.ik:

Number Integer fizzbuzz = method(
  fn(str, if(str empty?, self, str)) call(
    if(self % 3 == 0, "Fizz", "") + if(self % 5 == 0, "Buzz", ""))
)
(1..50) map(n, n fizzbuzz) println

実行結果:

[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, 2, Fizz, 34, Buzz, Fizz, 37, 38, Fizz, Buzz, 41, Fizz, 43, 44, FizzBuzz, 46, 47, Fizz, 49, Buzz]

今回のポイント。

  1. Integerにfizzbuzzメソッドを持たせた(katzchangさんの方法 を見習いました)。
  2. “fn”(lexical block)を使ってみた。ちょっとlambda風味。
  3. Integerにfizzbuzzメッセージを渡すと、Fizz, Buzz, 値自身のどれかが返ってくる。

知れば知るほど Ioke は素晴らしいです。自分のデフォルト言語になる予感。こいつをJavaScriptの代わりにブラウザで使いたい。C#の代わりにVisual Studioで使いたい。激しく使いたい!