我想确定哪个函数作为参数传递给高阶函数。
我怎样才能做到这一点?使用模式匹配?
我想做类似以下代码的事情:
add x y = x+y
sub x y = x-y
myFunc :: (a->a->a) -> a -> a -> IO a
myFunc add x y = do print "add was performed"
add x y
myFunc sub x y = do print "sub was performed"
sum x y
myFunc f x y = do print "another function was performed"
f x y
如果这是不可能的,有没有人有其他想法可以做到这一点?
最佳答案
不,这是不可能的。
您可以通过具有表示操作的数据类型来实现该效果,也许
data Operation
= Add (a -> a -> a)
| Sub (a -> a -> a)
| Other (a -> a -> a)
myFunc :: Operation -> a -> a -> IO a
myFunc (Add f) x y = do print "add was performed"
return (f x y)
myFunc (Sub f) x y = do print "sub was performed"
return (f x y)
myFunc (Other f) x y = do print "another function was performed"
return (f x y)
关于Haskell:是否可以确定哪个函数作为参数传递给高阶函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34746196/