我有一個函數,dir_con :: (Int -> Dir)
模式匹配上功能
我想要模式匹配以找到具體的構造dir_con是。數據類型是:
data Dir = Define Int
| Equals Int
| Data Int
| LCset Int
| NoArg Int
所以,dir_con要麼是定義,的Equals等,這是傳遞給函數的和我想的模式匹配,像這樣:
case dir_con of
NoArg -> Do something specific
_ -> Do something for the rest
編譯器不像那樣。錯誤訊息是Couldn't match expected type 'Int -> Dir' with actual type 'Dir'
。
當然NoArg
是類型(Int -> Dir)
的構造函數? Haskell不允許這種類型的模式匹配嗎?我必須這樣做,因爲Dir
構造函數來自地圖。有沒有關於如何以不同方式對待NoArg
的建議?
您可能需要重構您的數據類型以將當前構造器移動到枚舉中,例如,像'data Dir = Dir DirType Int;數據DirType =定義|等於|數據| LCset | NoArg'。 – hammar 2013-03-15 21:51:31