gpt4 book ai didi

haskell - 是否有计算 `f x (g x)` 的标准函数?

转载 作者:行者123 更新时间:2023-12-02 02:50:05 25 4
gpt4 key购买 nike

我在 Hoogle 上找不到任何东西,但是是否有一个标准函数或运算符带有如下签名:

func :: (a -> b -> c) -> (a -> b) -> a -> c

IE。给定两个函数 fg和一个元素 x作为参数,它计算 f x (g x) ?

最佳答案

您正在寻找的函数是 (<*>) .为什么?嗯,确实如此 (<*>)有一个更通用的类型:

(<*>) :: Applicative f => f (a -> b) -> f a -> f b

但考虑到我们可以专攻 f(->) r ,它有一个 Applicative实例:
(<*>) :: (->) r (a -> b) -> (->) r a -> (->) r b

...然后我们可以重新排列类型 ->是中缀而不是前缀,因为它通常是:
(<*>) :: (r -> a -> b) -> (r -> a) -> (r -> b)

...这与您的签名模 alpha 重命名相同。

这是有效的,因为函数类型, (->) , 有 Functor 的实例, Applicative , 和 Monad ,习惯上被称为“读者”。这些实例将一个额外的参数串到它们的所有参数上,这正是您的函数所做的。

关于haskell - 是否有计算 `f x (g x)` 的标准函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47779818/

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