Haskell System.IO的官方源代码在哪里?

Haskell System.IO的官方源代码在哪里?,haskell,Haskell,System.IO的官方来源在哪里 我看了看,但它不在那里 当点击按钮时,它说它不在这里。我很困惑,因为页面上的其他链接似乎都能正常工作 编辑: 我发现: instance Monad IO where {-# INLINE return #-} {-# INLINE (>>) #-} {-# INLINE (>>=) #-} m >> k = m >>= \ _ -> k return

System.IO的官方来源在哪里

我看了看,但它不在那里

当点击按钮时,它说它不在这里。我很困惑,因为页面上的其他链接似乎都能正常工作

编辑:

我发现:

instance  Monad IO  where
    {-# INLINE return #-}
    {-# INLINE (>>)   #-}
    {-# INLINE (>>=)  #-}
    m >> k    = m >>= \ _ -> k
    return    = returnIO
    (>>=)     = bindIO
    fail s    = failIO s

bindIO :: IO a -> (a -> IO b) -> IO b
bindIO (IO m) k = IO $ \ s -> case m s of (# new_s, a #) -> unIO (k a) new_s

。我相信这就是游牧规范

如果您想要内部实现。。。嗯,它是硬连接到编译器的。您必须通读GHC源代码


编辑:
IO
是特殊的<代码>IO很神奇。查看来源不会告诉你任何有趣的事情。它将只是一组代码,用于操纵编译器内部的、关于I/O工作方式的低级表示。无论你想了解什么,你可能都不会在这里找到启示。

源代码或信息源?显然,基于链接并单击“源代码”(如果是代码),这对我来说很有用:我想看看
>=
是如何实现的。这是在内部实现中吗?我认为应该有GHC.Types。看起来不像。在任何情况下,在GHC中,我相信
newtypeIO a=IO(RealWorld#->(RealWorld#->)
,绑定的实现就像
State
。这是什么意思?GHC内部的东西通常有散列标记。(通常Haskell名称中不允许使用散列。有一个名为“magic hash”的语言扩展来启用它。)基本上,散列表示它是魔术。(更准确地说,它意味着它是unfleed,意思是不懒惰。)@MathematicalOrchid,hash意味着它是一个未绑定类型。这带来了严格性,但也意味着该值不能是未定义的。