Haskell 为什么你可以';当您可以使用let(绑定)时,是否在do块内不使用替换?
为什么不能在do块中使用替换? 这段代码运行良好Haskell 为什么你可以';当您可以使用let(绑定)时,是否在do块内不使用替换?,haskell,Haskell,为什么不能在do块中使用替换? 这段代码运行良好 test :: (x -> x) -> [x] -> [x] test f a = map f a main :: IO () main = do let sq x = x * x :: Int let ret = test sq [1,2,3] print ret 但是如果你删除do块中的let's,我会得到编译错误 parse error on input ‘=’ Perhaps you need a 'let
test :: (x -> x) -> [x] -> [x]
test f a = map f a
main :: IO ()
main = do
let sq x = x * x :: Int
let ret = test sq [1,2,3]
print ret
但是如果你删除do块中的let's,我会得到编译错误
parse error on input ‘=’
Perhaps you need a 'let' in a 'do' block?
e.g. 'let x = 5' instead of 'x = 5'
“设x=y”等于“x
let
是在do
块中为名称赋值的方式let x=y
不等同于xlet
是在do
块中为名称赋值的方式let x=y
不等同于x否,它们不相同。考虑<代码> do>代码/>代码>让p= PutsLLn“Hello World”<代码> >代码> P<代码> >代码> P<代码>(想象每行/行有适当的缩进)不,它们不一样。考虑<代码> do>代码/>代码>让p= PutsLLn“Hello World”<代码> />代码> P<代码> />代码> P<代码>(想象每行/行有适当的缩进)
do let x = y
...
let x = y
in do ...
do x <- y
...
do y >>= (\x -> ...)