这与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
但是有没有更好的方法,而不用(>> =)使行混乱并返回?
最佳答案
liftM
和head
都很好,但让我们不要忘记模式匹配:
main = do { arg:_ <- getArgs; print arg }
或者如果您喜欢布局
main = do
arg : _ <- getArgs
print arg
在可能的情况下,大多数Haskeller都更喜欢模式匹配,而不是
head
和tail
。