Elm Form Example 、122行目から取得した次のコードでは、<<
演算子の意味?
Field.field Field.defaultStyle (Signal.send updateChan << toUpdate) "" content
Elm構文リファレンス で見つかりませんでした。
フィールドが変更されたときに、そのcontent
をupdateChan
に送信する代わりに、toUpdate
をupdateChan
に送信するということですか?
_<<
_ は関数構成であり、関数を返します。
合成は、計算のパイプ、関数のチェーンを作成します。このパイプは入力を待機し、提供されると、最初の関数が計算を開始し、出力を次へ送信します。
_import Html
add x y =
Debug.log "x" x + Debug.log "y" y
add9 =
add 4 << add 5
main =
Html.text <| toString <| add9 2
_
注:上記の例では、 部分アプリケーション を使用しています。つまり、機能するためにすべてのパラメーターを提供するわけではなく、結果として機能します。
上記の例をWebブラウザーで実行し、コンソール出力を見ると、次のように表示されます:
_x: 5
y: 2
x: 4
y: 7
_
数学演算として記述した場合、次のようになります。
_4 + (5 + 2)
4 + 7
_
注:フォワードバージョン_>>
_。も使用できます
この演算子の署名を見る:
_(<<) : (b -> c) -> (a -> b) -> a -> c
_
_<<
_演算子には、最初のパラメーターとして関数_b -> c
_があり、2番目の関数として関数_a -> b
_があります。
_(b -> c) << (a -> b)
_
しかし、3番目のパラメーターa
もあります。 _->
_は右結合なので、
_(<<) : (b -> c) -> (a -> b) -> a -> c
_
以下と同等です:
_(<<) : (b -> c) -> (a -> b) -> (a -> c)
_。
したがって、_<<
_は関数_a -> c
_を返します。
プログラミング言語では、演算子の結合性(または固定性)は、同じ優先順位の演算子を括弧なしでグループ化する方法を決定するプロパティです。つまり、各演算子が評価される順序:
_a = b = c
_はa = (b = c)
として解析されます
ここでは_<<
_を 中置演算子 として使用していますが、括弧で囲む接頭辞演算子として使用することもできます:_(<<) (b -> c) (a -> b)
_または_(<|) (add 4) (add 5)
_。
Elm <0.18 使用 通常の関数を使用して、中置演算子として使用できます。
<|
_演算子についての言葉_<|
_ は関数アプリケーションです-戻り値
基本的に括弧の代わりに使用します。
text (something ++ something)
として書くことができます
_text <| something ++ something
_
この演算子の signature を見ると:
_(<|) : (a -> b) -> a -> b
_
_<|
_演算子には、最初のパラメーターとして関数_a -> b
_があり、2番目として値a
があることがわかります。
_(a -> b) <| a
_
b
を返します。
関数アプリケーション_<|
_で同じ値を取得できます。
_v1 = add 4 <| add 5 <| 4
v2 = (add 4 << add 5) 4
_
|>
_のフォワードバージョンもあります。<|
_および_<<
_機能構成です。具体的な例としては、
\x -> (Signal.send updateChan (toUpdate x))
Elmでは、構文の一部ではなく、標準ライブラリの一部です。 Basics。<<