gpt4 book ai didi

haskell - Haskell 中的中缀运算符优先级

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

对于下面的 Haskell 表达式

return a >>= f

是否应该读作

(return a) >>= f

return (a >>= f)?

这里的相关规则是什么?

最佳答案

规则总是函数应用程序的优先级高于任何运算符,所以

return a >>= f

被解析为

(return a) >>= f

无论使用什么函数或运算符代替 returnf>>=


这意味着像

divide :: Int -> Int -> Double
divide x y = (fromIntegral x) / (fromIntegral y)

相当于

divide :: Int -> Int -> Double
divide x y = fromIntegral x / fromIntegral y

另一个更有用的例子是函数组合:

something :: [Int] -> [Int]
something xs = filter even . map (+1) . zipWith (*) [1..] . take 200 . cycle $ xs

正如您在这里看到的,我们甚至让 zipWith 接受两个由其他几个函数组成的参数。这相当于在组合的每个组件周围都加上了括号。

关于haskell - Haskell 中的中缀运算符优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643991/

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