python のスーパーセットな関数型言語 Coconut を試す

パイプライン演算子が使える言語がないか探していたところ Coconut というものを見つけました。

公式の説明を見ると

なにそれ面白そう。 という事で、ちょっと触ってみました。

インストールは

$ pip install coconut

でいけますが、http://coconut-lang.org/ の上の方に web の実行環境があるので、ちょっと試すならこれで十分です。

さっそく hello world

"hello, world!" |> print

次は無名関数 & 部分適用 & 関数合成。

add = (x, y) -> x + y
add1 = add$(1)

prd = (x, y) -> x * y
prd2 = prd$(2)

(add1 .. prd2)(1) |> print # -> 3
(prd2 .. add1)(1) |> print # -> 4

部分適用する関数には $ をつけるみたいですね。 これは Python との互換を保つために必要なんでしょうか。

最後にいつもの偶数自乗和

result = (
    range(10)
    |> filter$((n) -> n % 2 == 0)
    |> map$((n) -> n * n)
    |> reduce$((acc, n) -> acc + n)
)
print(result) # -> 120

python でも () の中なら自由に改行できるみたいなので パイプライン演算子も気持ちよく使えます。