この関数宣言は違法であると言われました:
f3 1 (f2 x) y
これが違法である理由は理解できます。2 番目の引数 (f2 x) と関係があると思います。誰かが私にこれを説明できますか?
この関数宣言は違法であると言われました:
f3 1 (f2 x) y
これが違法である理由は理解できます。2 番目の引数 (f2 x) と関係があると思います。誰かが私にこれを説明できますか?
関数定義では、関数のパラメーターはpatternでなければなりません。
_
すべてに一致し、何もバインドしないワイルドカードvar
、[elem1, elem2, elem3, elem4]
、Con{ field1 = value1, field2 = value2 }
,(pattern)
、(pattern1, pattern2, pattern3)
,var@pattern
引数全体をバインドし、 コンポーネントが一致する場合var
は の対応する部分にバインドする、またはpattern
~pattern
引数 resp をバインドする反駁不可能なパターン。それぞれの部分pattern
。引数が実際に一致しない場合、実行時エラーが発生しますpattern
。(f2 x)
フラグメントの部分
f3 1 (f2 x) y
はパターンではなく、f2
値 ( ) に適用される式、関数 ( x
) であるため、関数定義は次の形式を持つことはできません。
f3 1 (f2 x) y = whatever
最も近い有効な関数の定義は次のとおりです。
f3 1 (F2 x) y = ...
(単項)値コンストラクター F2
を使用します。