local fun loop rand = (* 引数として乱数生成器の状態をとる *) (let val x = (Random.randNat rand) mod 10 val y = (Random.randNat rand) mod 10 in (print (Int.toString x); print " + "; print (Int.toString y); print " = ? "; let val s = TextIO.inputLine TextIO.stdIn val z = valOf (Int.fromString s) in print (if x + y = z then "Correct\n" else "Wrong\n") end) end; (* またloopを呼び出す *) loop rand) in fun start seed1 seed2 = (* 乱数発生器の種(seed)を受け取る *) (* 乱数生成器を初期化してloopを呼び出す *) loop (Random.rand (seed1, seed2)) end