mmag

ハマったことメモなど

Elixirで新しく使えるようになったオペレータ

つい先ほどElixir 1.0.0がリリースされました。めでたいめでたい。

個人的には、1.0.0-rc2で入った変更に注目しております。

[Kernel] Add <~, ~>, <<~, ~>>, <~>, <|> as operators

これです。

次のようなことができるようになりました。

defmodule M do
  def left <|> right do
    left + right
  end
end

import M
1 <|> 2        #=> 3
1 <|> 2 <|> 3  #=> 6

以前はsyntax errorになってしまった書き方が、今後は許されます。 もちろんマクロの名前にも使えるので、より柔軟なDSLなどが書けそうです。

ちなみに、結合順は((1 <|> 2) <|> 3)です。