中間演算子
/miyamoen/miyamo.icon
code:Example.elm
(?) : Maybe a -> a -> a
(?) maybe default =
Maybe.withDefault default maybe
infixr 9 ?
中間演算子は実際はただの関数で()で囲めば普通の関数として扱える
Elmでは中間演算子を自分で定義することができる
作り方
()で囲み、記号のみで関数名を指定する
そのあと別の行に
code:Elm
こんな感じで書く
右結合・左結合
code:Elm
infixl 6 +
infixl 6 -
infixl 7 *
infixl 7 /
infixr 8 ^
infixl 7 //
infixl 7 %
infixrとinfixlキーワードを使って結合する方向を指定できる
code:Elm
7 * 6 * 5
*は左結合なので7 * 6がまず計算され次に42 * 5が計算されるということ
code:Elm
2 ^ 3 ^ 2 == 512
右結合なので512
code:Elm
(2 ^ 3) ^ 2 == 64
括弧で結合順を制御できる
優先順位
結合順位
0~9
普通の関数適用が優先度9相当(だと思う)
中間演算子を作るか作らないか
自分で作ることはほぼない
ライブラリでの提供もHoge.Infixモジュールを作って分けましょうって言ってた