Ticket #91: Unique.2.hs

File Unique.2.hs, 342 bytes (added by ajk, 13 years ago)
Line 
1module Unique where
2
3import GHC.Exts (Splittable(..))
4
5type Unique = Integer
6
7data UniqueSupply = US Integer
8
9instance Splittable UniqueSupply where
10    split (US i) = (US i, US (i+1))
11
12withNewUniqueSupply e = let %uniqueSupply = US 0 in e
13
14newUnique :: (%uniqueSupply :: UniqueSupply) => Unique
15newUnique = r
16    where US r = %uniqueSupply
17