我探索了 System.Random.StdGen 并在源代码中看到了这段代码。
data StdGen = StdGen Int32 Int32
似乎模块也导出了 StdGen。
module System.Random (
RandomGen(next, split, genRange)
, StdGen
...
但是,为什么我不能在我的代码中这样做,比如,
Prelude System.Random> StdGen 1 2
Not in scope: data constructor `System.Random.StdGen'**
另一方面,我可以做到这一点,
module F (Foo) where
import GHC.Int
data Foo = Foo GHC.Int.Int32 GHC.Int.Int32 deriving (Show)
和
Prelude> Foo 1 2
Foo 1 2
有人能告诉我这个数据构造函数是如何隐藏的吗?