Copyright | (C) 2017 Csongor Kiss |
---|---|
License | BSD3 |
Maintainer | Csongor Kiss <kiss.csongor.kiss@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Magic product operations using Generics
These classes need not be instantiated manually, as GHC can automatically
prove valid instances via Generics. Only the Generic
class needs to
be derived (see examples).
- class HasFieldAt index a s | s index -> a where
- getFieldAt :: forall index a s. HasFieldAt index a s => s -> a
- setFieldAt :: forall index a s. HasFieldAt index a s => a -> s -> s
Magic lens
class HasFieldAt index a s | s index -> a where Source #
Types that have a field at given position.
Lens focusing on a field at a given index. Compatible with the lens package.
>>>
human & itemAt @1 .~ "Tamas"
Human "Tamas" 50 "London"
Getter and setter
getFieldAt :: forall index a s. HasFieldAt index a s => s -> a Source #
Get positional field
>>>
getFieldAt @1 human
"Tunyasz"
setFieldAt :: forall index a s. HasFieldAt index a s => a -> s -> s Source #
Set positional field
>>>
setFieldAt @2 (setField @1 "Tamas" human) 30
Human "Tamas" 30 "London"