gpt4 book ai didi

haskell - 在haskell中具有多值函数的函数组合?

转载 作者:行者123 更新时间:2023-12-03 23:17:31 24 4
gpt4 key购买 nike

我想知道是否可以使用带有多个参数的函数进行函数组合。我希望能够做这样的事情

x = (+3).(*)

将 x 设置为将两个数字的乘积相加的函数。

最佳答案

有多种方法可以做到这一点,但它们都有些尴尬。

((+3).) . (*)
≡ fmap (+3) . (*)
≡ curry $ (+3) . uncurry (*)
≡ \l r -> l*r + 3

哦,等等,这是签名,还有一个紧凑的定义,猜猜它叫什么......
((.).(.)) (+3) (*)

我认为最明确的 lambda 解决方案在这里是最好的。

有什么帮助,并且通常只是在本地作为一个(或两个)-liner 完成,是将此组合定义为自定义中缀:
(.:) :: (c->d) -> (a->b->c) -> a->b->d
f .: i = \l r -> f $ i l r

这使您可以简单地编写 (+3) .: (*) .

顺便说一句,对于类似的 (b->b->c) -> (a->b) -> a->a->c (为中缀的两个参数预先组合正确的函数)存在 a widely-used standard implementation .

关于haskell - 在haskell中具有多值函数的函数组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16888222/

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