| 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 |
Data.Generics.Sum.Any
Contents
Description
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.
Methods
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 @DogJust (MkDog {name = "Shep", age = 3})>>>dog ^? _As @"Cat"Nothing>>>cat ^? _As @(Name, Age)Just ("Mog",5)>>>cat ^? _As @"Cat"Just ("Mog",5)>>>_As @"Cat" # ("Garfield", 6) :: AnimalCat ("Garfield",6)>>>duck ^? _As @AgeJust 2