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 |
Derive a variety of prisms generically.
- class AsAny sel a s | s sel k -> a where
Prisms
class AsAny sel a s | s sel k -> a where Source #
Sums that have generic prisms.
A prism that projects a sum as identified by some selector. Currently
supported selectors are constructor names and unique types. Compatible
with the lens package's Prism
type.
>>>
dog ^? _As @"Dog"
Just (MkDog {name = "Shep", age = 3})>>>
dog ^? _As @Dog
Just (MkDog {name = "Shep", age = 3})>>>
dog ^? _As @"Cat"
Nothing>>>
cat ^? _As @"Cat"
Just ("Mog", 5)>>>
_As @"Cat" # ("Garfield", 6) :: Animal
Cat ("Garfield", 6)>>>
duck ^? _As @Age
Just 2