我有一个功能,dir_con :: (Int -> Dir)
我想进行模式匹配以查找 dir_con 是哪个特定的构造函数。数据类型为:
data Dir = Define Int
| Equals Int
| Data Int
| LCset Int
| NoArg Int
所以,dir_con 要么是Define,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
区别对待的建议?