bhe*_*ilr 12
规则始终是函数应用程序具有比任何运算符更高的优先级,因此
return a >>= f
Run Code Online (Sandbox Code Playgroud)
被解析为
(return a) >>= f
Run Code Online (Sandbox Code Playgroud)
无论正在使用的,而不是什么功能或运营商return,f以及>>=.
这意味着像
divide :: Int -> Int -> Double
divide x y = (fromIntegral x) / (fromIntegral y)
Run Code Online (Sandbox Code Playgroud)
相当于
divide :: Int -> Int -> Double
divide x y = fromIntegral x / fromIntegral y
Run Code Online (Sandbox Code Playgroud)
另一个更有用的例子是功能组合:
something :: [Int] -> [Int]
something xs = filter even . map (+1) . zipWith (*) [1..] . take 200 . cycle $ xs
Run Code Online (Sandbox Code Playgroud)
正如你在这里看到的,我们甚至zipWith将两个参数与其他几个函数组合在一起.这相当于在组合的每个组件周围加上括号.
| 归档时间: |
|
| 查看次数: |
447 次 |
| 最近记录: |