0
我有这样的代码片段:随机返回(g,g)而不是(Double,g)?
markovNextSS :: (RandomGen g, Ord a) => (MarkovChain a, a, g) -> (MarkovChain a, a, g)
markovNextSS (chain, prev, gen) = let
(gen', roll) = randomR (0.0, 1.0) gen
-- expected to get a (Double, g) above,
-- but GHC 7.8.3 says that this is a (g, g) instead
next = markovNext chain prev roll
in (chain, next, gen')
为什么会GHC是上面的推断错误的类型,特别是如果RandomGen
不是Random
一个实例?