schematic-0.1.6.0: JSON-biased spec and validation tool

Safe HaskellNone
LanguageHaskell2010

Data.Schematic.Lens

Synopsis

Documentation

type family FIndex (r :: Symbol) (rs :: [(Symbol, Schema)]) :: Nat where ... Source #

A partial relation that gives the index of a value in a list.

Equations

FIndex r ('(fn, s) ': rs) = Z 
FIndex r (s ': rs) = S (FIndex r rs) 

class i ~ FIndex fn rs => FElem fn rs i where Source #

Minimal complete definition

flens, fget, fput

Associated Types

type ByRevision fn rs i :: Schema Source #

Methods

flens :: Functor g => proxy fn -> (FieldRepr '(fn, ByRevision fn rs i) -> g (FieldRepr '(fn, ByRevision fn rs i))) -> Rec FieldRepr rs -> g (Rec FieldRepr rs) Source #

fget :: proxy fn -> Rec FieldRepr rs -> FieldRepr '(fn, ByRevision fn rs i) Source #

For Vinyl users who are not using the lens package, we provide a getter.

fput :: FieldRepr '(fn, ByRevision fn rs i) -> Rec FieldRepr rs -> Rec FieldRepr rs Source #

For Vinyl users who are not using the lens package, we also provide a setter. In general, it will be unambiguous what field is being written to, and so we do not take a proxy argument here.

Instances

FElem fn ((:) (Symbol, Schema) ((,) Symbol Schema fn r) rs) Z Source # 

Associated Types

type ByRevision (fn :: Symbol) ((:) (Symbol, Schema) ((,) Symbol Schema fn r) rs :: [(Symbol, Schema)]) (Z :: Nat) :: Schema Source #

Methods

flens :: Functor g => proxy fn -> (FieldRepr ((Symbol, Schema) fn (ByRevision fn (((Symbol, Schema) ': (Symbol, Schema) fn r) rs) Z)) -> g (FieldRepr ((Symbol, Schema) fn (ByRevision fn (((Symbol, Schema) ': (Symbol, Schema) fn r) rs) Z)))) -> Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': (Symbol, Schema) fn r) rs) -> g (Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': (Symbol, Schema) fn r) rs)) Source #

fget :: proxy fn -> Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': (Symbol, Schema) fn r) rs) -> FieldRepr ((Symbol, Schema) fn (ByRevision fn (((Symbol, Schema) ': (Symbol, Schema) fn r) rs) Z)) Source #

fput :: FieldRepr ((Symbol, Schema) fn (ByRevision fn (((Symbol, Schema) ': (Symbol, Schema) fn r) rs) Z)) -> Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': (Symbol, Schema) fn r) rs) -> Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': (Symbol, Schema) fn r) rs) Source #

((~) Nat (FIndex r ((:) (Symbol, Schema) s rs)) (S i), FElem r rs i) => FElem r ((:) (Symbol, Schema) s rs) (S i) Source # 

Associated Types

type ByRevision (r :: Symbol) ((:) (Symbol, Schema) s rs :: [(Symbol, Schema)]) (S i :: Nat) :: Schema Source #

Methods

flens :: Functor g => proxy r -> (FieldRepr ((Symbol, Schema) r (ByRevision r (((Symbol, Schema) ': s) rs) (S i))) -> g (FieldRepr ((Symbol, Schema) r (ByRevision r (((Symbol, Schema) ': s) rs) (S i))))) -> Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': s) rs) -> g (Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': s) rs)) Source #

fget :: proxy r -> Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': s) rs) -> FieldRepr ((Symbol, Schema) r (ByRevision r (((Symbol, Schema) ': s) rs) (S i))) Source #

fput :: FieldRepr ((Symbol, Schema) r (ByRevision r (((Symbol, Schema) ': s) rs) (S i))) -> Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': s) rs) -> Rec (Symbol, Schema) FieldRepr (((Symbol, Schema) ': s) rs) Source #