Haskell 做语法分析和作业

Haskell 做语法分析和作业,haskell,monads,Haskell,Monads,假设此代码: g :: Maybe Int g = do x <- Just 5 -- THIS LINE, `x` is plain Int Just x 我的问题是,作业x会不会让人困惑?不,它不会让人困惑。此外,如果您将您的示例扩展到离实际问题更近一步的地方,您甚至会看到所有这些的原因。例如: g :: Maybe Int g = do x <- Just 5 -- THIS LINE, `x` is plain Int Just (x + 3) 如果x

假设此代码:

g :: Maybe Int
g = do
  x <- Just 5  -- THIS LINE, `x` is plain Int
  Just x

我的问题是,作业x会不会让人困惑?不,它不会让人困惑。此外,如果您将您的示例扩展到离实际问题更近一步的地方,您甚至会看到所有这些的原因。例如:

g :: Maybe Int
g = do
  x <- Just 5  -- THIS LINE, `x` is plain Int
  Just (x + 3)
如果x仍然是一个整数,你将如何解决这个问题


我想这可能会对你理解单子有很大帮助。

如果你认为x::Int令人困惑,那你就错了。这里真正令人困惑的是,你感知到x是否令人困惑取决于你问谁,也就是说,它完全是主观的。或者你的问题有什么不同吗?我们可以将g=Just 5>>=\x->Just x简化为g=Just 5漂亮的教程!谢谢,如果x@Cartesius00,x的类型是Int,但在本文中,它不是赋值,至少不完全是,当然也不是命令式的。
g :: Maybe Int
g = do
  x <- Just 5  -- THIS LINE, `x` is plain Int
  Just (x + 3)