我有以下来源
-- Quantity.hs
import System.Random
data Quantity = Quantity Integer deriving (Show)
instance Random Quantity where
randomR (Quantity lo, Quantity hi) g =
let rand = randomR (lo, hi) g
(r, g) = rand
in (Quantity r, g)
random g =
let rand = random g
(r, g) = rand
in (Quantity r, g)
当我这样做ghci Quantity.hs
然后
let g = mkStdGen 0
let (r, g1) = random g :: (Quantity, StdGen)
r
最后一步的输出是
Quantity <no newline>
并且计算显然挂起,但 CPU 没有做任何事情(通过系统监视器确认)。
同时
let (r, g1) = random g :: (Integer, StdGen)
Quantity r
作品和产出
Quantity 2092838931
问题是什么?