考虑这个表达式(取自Real World Haskell第8章,我试图简化)
isElfFile :: FilePath -> IO Bool
isElfFile path = return . hasElfMagic =<< L.readFile path
Run Code Online (Sandbox Code Playgroud)
如何制作此功能的无点版本?我尝试使用其他绑定操作>>=,解除hasElfMagic,但似乎没有工作.
没有绑定在这里更简单:
isElfFile path = return . hasElfMagic =<< L.readFile path
isElfFile path = fmap hasElfMagic (L.readFile path)
isElfFile = fmap hasElfMagic . L.readFile
Run Code Online (Sandbox Code Playgroud)
但当然也可以=<<:
isElfFile path = return . hasElfMagic =<< L.readFile path
isElfFile path = (=<<) (return . hasElfMagic) (L.readFile path)
isElfFile = (=<<) (return . hasElfMagic) . L.readFile
isElfFile = (return . hasElfMagic =<<) . L.readFile
Run Code Online (Sandbox Code Playgroud)
通常,在尝试使点无效之前,将中缀函数转换为前缀形式是有帮助的.
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |