generic-lens-0.4.1.0: Generic data-structure operations exposed as lenses.

Copyright(C) 2017 Csongor Kiss
LicenseBSD3
MaintainerCsongor Kiss <kiss.csongor.kiss@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellSafe
LanguageHaskell2010

Data.Generics.Sum.Typed

Contents

Description

Derive constructor-field-type-based prisms generically.

Synopsis

Prisms

class AsType a s where Source #

Sums that have a constructor with a field of the given type.

Minimal complete definition

injectTyped, projectTyped

Methods

_Typed :: Prism' s a Source #

A prism that projects a constructor uniquely identifiable by the type of its field. Compatible with the lens package's Prism type.

>>> dog ^? _Typed @Dog
Just (MkDog {name = "Shep", age = 3})
>>> dog ^? _Typed @Age
Nothing
>>> cat ^? _Typed @(Name, Age)
Just ("Mog",5)
>>> duck ^? _Typed @Age
Just 2

injectTyped :: a -> s Source #

Inject by type.

projectTyped :: s -> Maybe a Source #

Project by type.

Instances

(Generic s, ErrorUnlessOne a s (CountPartialType a (Rep s)), GAsType (Rep s) a) => AsType a s Source # 

Methods

_Typed :: Prism' s a Source #

injectTyped :: a -> s Source #

projectTyped :: s -> Maybe a Source #