这与Haskell中的语法糖有关。一个简单的Haskell程序:

main = do
  args <- getArgs
  let first = head args
  print first

我在第一行中使用绑定(bind)(args <- getArgs),在第二行中使用纯分配(let first = ...)。是否可以将它们合并为可读的单行代码?

我知道我可以重写绑定(bind)“de-sugared”:
main = do
  first <- getArgs >>= ( return . head )
  print first

但是有没有更好的方法,而不用(>> =)使行混乱并返回?

最佳答案

liftMhead都很好,但让我们不要忘记模式匹配:

main = do { arg:_ <- getArgs; print arg }

或者如果您喜欢布局
main = do
    arg : _ <- getArgs
    print arg

在可能的情况下,大多数Haskeller都更喜欢模式匹配,而不是headtail

08-18 10:49