私は次のソースを持っています
-- 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
何が問題ですか?