私はこのデータ型を持っています
data Struct val = Empty | Exec1 val
| Exec2 val
そして2つのダミー関数
apply :: Struct -> String
apply (Empty) = "matched Empty"
apply (exec struct) = "matched Exec1 or Exec2"
apply' :: Struct val -> String
apply' (Empty) = "matched Empty"
apply' (Exec1 _) = "matched Exec1"
apply' (Exec2 _) = "matched Exec2"
2 つ目は正常に動作していますが、最初のものは「パターンの解析エラー: exec」というエラーを引き起こしています。apply (exec struct) = ... のようにコンストラクターで一致できない理由を説明してください。
データ型に複数のコンストラクターがあり、それらすべてを個別にパターン マッチする必要がある場合、多くのボイラープレート コードが発生します。