我有这种数据类型
data Struct val = Empty | Exec1 val
| Exec2 val
和两个虚拟函数
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"
第二个工作正常,但第一个导致错误:“Parse error in pattern: exec”。你能解释一下为什么我不能以这种方式匹配构造函数:apply (exec struct) = ... 吗?
当我的数据类型中有多个构造函数并且必须分别对它们进行模式匹配时,它会导致大量样板代码。