gpt4 book ai didi

Haskell:是否可以确定哪个函数作为参数传递给高阶函数?

转载 作者:行者123 更新时间:2023-12-01 07:18:06 25 4
gpt4 key购买 nike

我想确定哪个函数作为参数传递给高阶函数。
我怎样才能做到这一点?使用模式匹配?
我想做类似以下代码的事情:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com