Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unique identifier types and classes. Used by non-deterministic (noise) and non-sharable (demand) unit generators.
Synopsis
- type Id = Int
- class (Functor m, Applicative m, Monad m) => UId m where
- generateUId :: m Int
- type UId_ST = State Int
- uid_id_eval :: Identity t -> t
- uid_st_eval :: UId_ST t -> t
- uid_st_seq :: [UId_ST t] -> ([t], Int)
- uid_st_seq_ :: [UId_ST t] -> [t]
- liftUId1 :: UId m => (Int -> Fn1 a b) -> Fn1 a (m b)
- liftUId2 :: UId m => (Int -> Fn2 a b c) -> Fn2 a b (m c)
- liftUId3 :: UId m => (Int -> Fn3 a b c d) -> Fn3 a b c (m d)
- liftUId4 :: UId m => (Int -> Fn4 a b c d e) -> Fn4 a b c d (m e)
- class Hashable32 a => ID a where
- id_seq :: ID a => Int -> a -> [Id]
Id & UId
class (Functor m, Applicative m, Monad m) => UId m where Source #
A class indicating a monad (and functor and applicative) that will generate a sequence of unique integer identifiers.
generateUId :: m Int Source #
UId_ST
uid_id_eval :: Identity t -> t Source #
Alias for runIdentity
.
uid_st_eval :: UId_ST t -> t Source #
evalState
with initial state of zero.
uid_st_eval (replicateM 3 generateUId) == [0,1,2]
uid_st_seq_ :: [UId_ST t] -> [t] Source #
fst
of uid_st_seq
.
uid_st_seq_ (replicate 3 generateUId) == [0,1,2]
Lift
ID
class Hashable32 a => ID a where Source #
Typeclass to constrain UGen identifiers.
map resolveID [0::Int,1] == [3151710696,1500603050] map resolveID ['α','β'] == [1439603815,4131151318] map resolveID [('α','β'),('β','α')] == [3538183581,3750624898] map resolveID [('α',('α','β')),('β',('α','β'))] == [0020082907,2688286317] map resolveID [('α','α','β'),('β','α','β')] == [0020082907,2688286317]
Nothing