假设我有一些类型
data Result = Fail | Success deriving (Show)
表达某些操作的结果和另一种任意类型
data MyData
和一些处理数据的函数
someAction :: MyData -> Result
someAction = if ... then Success else Fail
我需要一个包装函数formatAction,它使用MyData调用someAction并使用case语句格式化处理结果。这样的事情:
formatAction :: MyData -> String
formatAction = let res = someAction in
case res of
Success -> "OK"
Fail -> "Fail"
这不是一个有效的代码,但我无法理解如何使用该功能的结果' case'表达。任何的想法?
实际上我的意思是这样的一段代码:
data Result = Fail | Success
data SomeData = SDS | SDF
doSomeWork' :: SomeData -> Result
doSomeWork' SDS = Success
doSomeWork' _ = Fail
processData :: SomeData -> String
processData = let res = doSomeWork' in
case res of
Success -> "OK"
Fail -> "Fail"
它没有使用以下消息进行编译:
d:\工作\ Haskell中\ revRange.hs:16:17:
无法匹配预期类型SomeData -> Result'
with actual type
结果'
在模式中:成功
在另一种情况下:成功 - > " OK"
在表达式中:
案例资源{
成功 - > " OK"
失败 - > "故障" }
d:\工作\哈斯克尔\ revRange.hs:16:28:
无法匹配预期类型SomeData -> String'
with actual type
[字符]'
在表达式中:" OK"
在另一种情况下:成功 - > " OK"
在表达式中:
案例资源{
成功 - > " OK"
失败 - > "故障" }
d:\工作\哈斯克尔\ revRange.hs:17:17:
无法匹配预期类型SomeData -> Result'
with actual type
结果'
在模式中:失败
在另一种情况下:失败 - > "故障"
在表达式中:
案例资源{
成功 - > " OK"
失败 - > "故障" }
d:\工作\哈斯克尔\ revRange.hs:17:25:
无法匹配预期类型SomeData -> String'
with actual type
[字符]'
在表达式中:"失败"
在另一种情况下:失败 - > "故障"
在表达式中:
案例资源{
成功 - > " OK"
失败 - > "故障" }
无法理解如何将结果与模式相匹配。
答案 0 :(得分:2)
您可能需要添加函数参数
formatAction :: MyData -> String
formatAction d =
case someAction d of
Success -> "OK"
Fail -> "Fail"