我有這樣的數據類型構造模式匹配的Haskell
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"
第二個是工作正常,但第一個導致錯誤:「在模式解析錯誤: EXEC」。你可以解釋爲什麼我不能在構造函數上這樣匹配: apply(exec struct)= ...?
當我在我的數據類型中有多個構造函數並且必須分別將它們全部單獨匹配時,會導致很多樣板代碼。
在這種情況下重新使用預定義的'Maybe'類型可能是個好主意。 – dflemstr