| Safe Haskell | Safe |
|---|---|
| Language | Haskell98 |
Test.Feat.Modifiers
Description
Modifiers for types, i.e. newtype wrappers where the values satisfy some constraint (non-empty, positive etc.). Suggestions on useful types are appreciated.
To apply the modifiers types you can use the record label. For instance:
data C a = C [a] [a] derivingTypeableinstanceEnumerablea =>Enumerable(C a) whereenumerate=c2$ \xs ys -> C (nonEmptyxs) (nonEmptyys)
Alternatively you can put everything in pattern postition:
instanceEnumerablea =>Enumerable(C a) whereenumerate=unary$funcurry$ \(Free(NonEmptyxs,NonEmptyys)) -> C xs ys)
The first approach has the advantage of being usable with a
point free style: \xs -> C (.nonEmpty xs) . nonEmpty
Documentation
module Data.Modifiers