この関数宣言は違法であると言われました:
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を使用します。