-2
私は、この関数の宣言が違法であると言われていますHaskellの違法なパターンマッチ
F3 1(F2 x)はyの
この違法が、私はそれが第二とは何かを持っていると思う理由を私は理解してください引数(f2 x)。誰も私にこれを説明することはできますか?関数定義で
私は、この関数の宣言が違法であると言われていますHaskellの違法なパターンマッチ
F3 1(F2 x)はyの
この違法が、私はそれが第二とは何かを持っていると思う理由を私は理解してください引数(f2 x)。誰も私にこれを説明することはできますか?関数定義で
は、関数のパラメータがpatternsでなければならない、つまり、彼らはすべてのものと一致し、何も結合しない
_
、var
にする必要があり、そのすべて一致し、対応する引数をパラメータにバインドします。Con{ field1 = value1, field2 = value2 }
、(pattern)
、(pattern1, pattern2, pattern3)
[elem1, elem2, elem3, elem4]
[email protected]
、それが一致する場合pattern
の対応する部分にvar
およびコンポーネントに全体引数結合、または~pattern
は、引数respをバインドします。その部分にpattern
resp。引数が実際にpattern
と一致しない場合、実行時エラーが発生します。断片
f3 1 (f2 x) y
における一部(f2 x)
パターンが、式、(f2
)が値(x
)に適用される関数ではない、従って関数定義の形式を持つことができない
f3 1 (f2 x) y = whatever
最も近い法的な関数の定義は以下のようになり
f3 1 (F2 x) y = ...
(単項)値コンストラクタF2
です。
これは宣言ではありません。これは表現の断片です。周囲のコードとは何ですか?そして、あなたはどんなエラーを受けますか? –
ハズケの入門コースの試験問題の一部です。問題は次のとおりです。パターンを使用して左辺(関数f1、f2、f3、f4を定義する)のパターンを使用する場合は、パターンが不正であるかどうか、合法であれば、正確に説明してください 違法であれば、なぜ許可されていないのか説明してください。(v)f5 a1 [4](f1、f2、f3、f4、f5、f4、f5) 、a] [] – grimebox
私はそれらをすべて理解しています(i) – grimebox