小编jij*_*esh的帖子

转换带有两个以上操作的"do"表示法以使用bind函数

我知道以下"do"表示法的"绑定"功能相当于 getLine >>= \line -> putStrLn

do line <- getLine
   putStrLn line
Run Code Online (Sandbox Code Playgroud)

但是以下符号如何等同于绑定函数?

do line1 <- getLine
   putStrLn "enter second line"
   line2 <- getLine
   return (line1,line2)
Run Code Online (Sandbox Code Playgroud)

monads haskell ghc

6
推荐指数
4
解决办法
2297
查看次数

为什么这不会抛出任何类型的错误?

我正在尝试从其中一个博客中获取一些代码段,然后我注意到以下代码

f :: Int -> [Int]
f x = [1+x,2*x]

test :: IO ()
test = putStrLn . show $ return 5 >>= f >>= f
Run Code Online (Sandbox Code Playgroud)

执行时我正在[7,12,11,20].为什么第二个'f'函数调用不是抛出类型错误?这是List Monad的相关内容吗?

haskell type-inference

1
推荐指数
1
解决办法
145
查看次数

标签 统计

haskell ×2

ghc ×1

monads ×1

type-inference ×1