Nemerleが好さそう

今日知った機械言語Nemerleが好い感じ (Wikipedia).
C#のお仲間だけど, 細かなシンタクスとか, 漂ふ函數型の匂ひが私に好ましい.
メタプログラミンの機能が超豐富らしい(てかそれが一番の特徴)けど, 私は"メタプロ mo"状態なので今は觸りません.

取り敢へず書いた

はろわ

基本

System.Console.WriteLine("Helllo world!");

それっぽく

using System.Console;

module HelloWorld{
    Main() :void{
        WriteLine("Hello world!");
    }
}

インデント中心のシンタクスも

#pragma indent

using System.Console

module HelloWorld
    Main() :void
        WriteLine("Hello world!")

これが滅っ茶嬉しい

部分適用とかパイプライン演算とか

#pragma indent

def sum(a, b)
    a + b // "return"は不要

def succ = sum(_, 1) // 値を渡さない引き數はアンダスコアに

0 |> succ |> System.Console.WriteLine // 1

いつもの

フィボナチ數列 (with パターンマッチ)

def fib(_ :int) :int
    | 0 => 0
    | 1 => 1
    | n => fib(n - 2) + fib(n - 1)

10 |> fib |> System.Console.WriteLine // 55

fizz buzz

def fizzBuzz(n :int) :void
    for (mutable i = 0; i < n; i++)
        match ((i%3, i%5))
            | (0, 0) => "FizzBuzz" |> WriteLine
            | (0, _) => "Fizz" |> WriteLine
            | (_, 0) => "Buzz" |> WriteLine
            | _ => i |> WriteLine

20 |> fizzBuzz

(これに關しては未だ巧い書き方が有りそう)

感想

()と{;}が嫌ひな私としては, かなり好みです(シンタクスしか見てない).
後はドキュメントが多ければね(C#やれ).