1
是否可以使用patten匹配与柯里化数据?假设下面的代码:Haskell:使用patten匹配与柯里化数据
data Bind = Echo String | Sum Int Int
getOperation (Echo x) = "Echo"
getOperation (Sum x y) = "Sum"
main = getOperation (Sum 1)
它失败,因为Sum 1
的类型为Int -> Bind
,并getOperation
的类型为Bind -> String
。
我的意思是获取一个字符串,即使数据已被curried,也可以使用数据构造函数。像这样的假代码:
getOperation (Echo x) = "Echo"
getOperation (Echo) = "Echo" -- Pattern matching for curried data
getOperation (Sum x y) = "Sum"
getOperation (Sum x) = "Sum" -- Pattern matching for curried data
你自己说的'Echo'是'字符串 - > Bind' - 所以现在它是一个带'String'并返回一个'Bind'的函数,可悲的是你不能模式匹配函数(它可能是'\ _ - > Sum 0 0'以及所有'getOperation'在这一点上都知道的) – Carsten