将 do 块转换为使用 >>= 的代码
Convert a do block into a code that uses >>=
我有以下功能
foo =
do
putStr "type in a sentence: "
s <- getLine
putStrLn ("You typed " ++ s)
我需要转换此函数,使其不使用 'do' 而是使用 >>=。
我能够在其他示例中做到这一点,我必须连接 2 个单子
maybeadd' x y = x >>= (\x' -> y >>= (\y' -> pure(x'++y') ))
但我不知道如何处理我的情况。有人能给我指出正确的方向吗?
谢谢!
像这样:
foo = putStr "type in a sentence: " >> getLine >>= \s -> putStrLn ("You typed " ++ s)
一般规则是没有 <-
的行脱糖为 >>
,带有 <-
的行脱糖为 >>=
和 lambda。
我有以下功能
foo =
do
putStr "type in a sentence: "
s <- getLine
putStrLn ("You typed " ++ s)
我需要转换此函数,使其不使用 'do' 而是使用 >>=。
我能够在其他示例中做到这一点,我必须连接 2 个单子
maybeadd' x y = x >>= (\x' -> y >>= (\y' -> pure(x'++y') ))
但我不知道如何处理我的情况。有人能给我指出正确的方向吗?
谢谢!
像这样:
foo = putStr "type in a sentence: " >> getLine >>= \s -> putStrLn ("You typed " ++ s)
一般规则是没有 <-
的行脱糖为 >>
,带有 <-
的行脱糖为 >>=
和 lambda。