| 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