Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Additional functionality for named
package.
Synopsis
- (!) :: WithParam p fn fn' => fn -> Param p -> fn'
- type (:!) (name :: Symbol) a = NamedF Identity a name
- type (:?) (name :: Symbol) a = NamedF Maybe a name
- (<:!>) :: Functor m => Name name -> m a -> m (NamedF Identity a name)
- (<:?>) :: Functor m => Name name -> m (Maybe a) -> m (NamedF Maybe a name)
- type family ApplyNamedFunctor (f :: Type -> Type) (a :: Type) where ...
- type family NamedInner (n :: Type) where ...
- class KnownNamedFunctor f where
- namedL :: Label name -> Iso' (NamedF f a name) (ApplyNamedFunctor f a)
- newtype NamedF (f :: Type -> Type) a (name :: Symbol) where
- data Name (name :: Symbol)
- arg :: forall (name :: Symbol) a. Name name -> (name :! a) -> a
- argF :: forall (name :: Symbol) f a. Name name -> NamedF f a name -> f a
- argDef :: forall (name :: Symbol) a. Name name -> a -> (name :? a) -> a
Documentation
type (:!) (name :: Symbol) a = NamedF Identity a name #
Infix notation for the type of a named parameter.
type (:?) (name :: Symbol) a = NamedF Maybe a name #
Infix notation for the type of an optional named parameter.
(<:!>) :: Functor m => Name name -> m a -> m (NamedF Identity a name) infixl 4 Source #
Special version of 'Morley.Util.Named.(:!)' for monadic operations
(<:?>) :: Functor m => Name name -> m (Maybe a) -> m (NamedF Maybe a name) infixl 4 Source #
Special version of 'Morley.Util.Named.(:?)' for monadic operations
type family ApplyNamedFunctor (f :: Type -> Type) (a :: Type) where ... Source #
ApplyNamedFunctor Identity a = a | |
ApplyNamedFunctor Maybe a = Maybe a |
type family NamedInner (n :: Type) where ... Source #
NamedInner (NamedF f a _) = ApplyNamedFunctor f a |
class KnownNamedFunctor f where Source #
namedL :: Label name -> Iso' (NamedF f a name) (ApplyNamedFunctor f a) Source #
Isomorphism between named entity and the entity itself.
Instances
newtype NamedF (f :: Type -> Type) a (name :: Symbol) #
Assign a name to a value of type a
wrapped in f
.
#verbose True :: NamedF Identity Bool "verbose"
pattern (:!) :: Name name -> a -> NamedF Identity a name | Convenience pattern synonym. Use to construct a named value. To pattern-match on a named value, use
|
pattern (:?) :: Name name -> Maybe a -> NamedF Maybe a name | Convenience pattern synonym. Use to construct an optional named value. To pattern-match on an optional named value, use
|
pattern Arg :: a -> name :! a | Match on an argument without specifying its name. See also: |
Instances
(name ~ name', a ~ a', InjValue f) => IsLabel name (a -> NamedF f a' name') | |
Defined in Named.Internal | |
FromJSON a => FromJSON (NamedF Identity a name) Source # | |
FromJSON a => FromJSON (NamedF Maybe a name) Source # | |
ToJSON a => ToJSON (NamedF Identity a name) Source # | |
ToJSON a => ToJSON (NamedF Maybe a name) Source # | |
(Typeable f, Typeable a, KnownSymbol name, Data (f a)) => Data (NamedF f a name) Source # | |
Defined in Morley.Util.Named gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NamedF f a name -> c (NamedF f a name) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NamedF f a name) # toConstr :: NamedF f a name -> Constr # dataTypeOf :: NamedF f a name -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NamedF f a name)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NamedF f a name)) # gmapT :: (forall b. Data b => b -> b) -> NamedF f a name -> NamedF f a name # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NamedF f a name -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NamedF f a name -> r # gmapQ :: (forall d. Data d => d -> u) -> NamedF f a name -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> NamedF f a name -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NamedF f a name -> m (NamedF f a name) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NamedF f a name -> m (NamedF f a name) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NamedF f a name -> m (NamedF f a name) # | |
(Show a, KnownSymbol name) => Show (NamedF Identity a name) Source # | |
NFData (f a) => NFData (NamedF f a name) Source # | |
Defined in Morley.Util.Named | |
(KnownSymbol name, Buildable (f a)) => Buildable (NamedF f a name) Source # | |
Defined in Morley.Util.Named | |
Eq (f a) => Eq (NamedF f a name) Source # | |
Ord (f a) => Ord (NamedF f a name) Source # | |
Defined in Morley.Util.Named compare :: NamedF f a name -> NamedF f a name -> Ordering # (<) :: NamedF f a name -> NamedF f a name -> Bool # (<=) :: NamedF f a name -> NamedF f a name -> Bool # (>) :: NamedF f a name -> NamedF f a name -> Bool # (>=) :: NamedF f a name -> NamedF f a name -> Bool # max :: NamedF f a name -> NamedF f a name -> NamedF f a name # min :: NamedF f a name -> NamedF f a name -> NamedF f a name # | |
HasRPCRepr a => HasRPCRepr (NamedF Identity a name) Source # | |
HasRPCRepr a => HasRPCRepr (NamedF Maybe a name) Source # | |
(TypeHasDoc (ApplyNamedFunctor f a), KnownSymbol n, KnownIsoT (ApplyNamedFunctor f Integer), Typeable f, Typeable a) => TypeHasDoc (NamedF f a n) Source # | |
Defined in Morley.Michelson.Typed.Haskell.Doc type TypeDocFieldDescriptions (NamedF f a n) :: FieldDescriptions Source # typeDocName :: Proxy (NamedF f a n) -> Text Source # typeDocMdDescription :: Markdown Source # typeDocMdReference :: Proxy (NamedF f a n) -> WithinParens -> Markdown Source # typeDocDependencies :: Proxy (NamedF f a n) -> [SomeDocDefinitionItem] Source # typeDocHaskellRep :: TypeDocHaskellRep (NamedF f a n) Source # typeDocMichelsonRep :: TypeDocMichelsonRep (NamedF f a n) Source # | |
IsoValue a => IsoValue (NamedF Identity a name) Source # | |
IsoValue a => IsoValue (NamedF Maybe a name) Source # | |
type AsRPC (NamedF Identity a name) Source # | |
type AsRPC (NamedF Maybe a name) Source # | |
type TypeDocFieldDescriptions (NamedF f a n) Source # | |
Defined in Morley.Michelson.Typed.Haskell.Doc | |
type ToT (NamedF Identity a name) Source # | |
type ToT (NamedF Maybe a name) Source # | |
A proxy for a name, intended for use with -XOverloadedLabels
:
#verbose :: Name "verbose"
arg :: forall (name :: Symbol) a. Name name -> (name :! a) -> a #
arg
unwraps a named parameter with the specified name. One way to use it is
to match on arguments with -XViewPatterns
:
fn (arg #t -> t) (arg #f -> f) = ...
This way, the names of parameters can be inferred from the patterns: no type
signature for fn
is required. In case a type signature for fn
is
provided, the parameters must come in the same order:
fn :: "t" :! Integer -> "f" :! Integer -> ... fn (arg #t -> t) (arg #f -> f) = ... -- ok fn (arg #f -> f) (arg #t -> t) = ... -- does not typecheck
Orphan instances
f ~ Defaults => Default (Param f) Source # | |
FromJSON a => FromJSON (NamedF Identity a name) Source # | |
FromJSON a => FromJSON (NamedF Maybe a name) Source # | |
ToJSON a => ToJSON (NamedF Identity a name) Source # | |
ToJSON a => ToJSON (NamedF Maybe a name) Source # | |
(Typeable f, Typeable a, KnownSymbol name, Data (f a)) => Data (NamedF f a name) Source # | |
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NamedF f a name -> c (NamedF f a name) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NamedF f a name) # toConstr :: NamedF f a name -> Constr # dataTypeOf :: NamedF f a name -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NamedF f a name)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NamedF f a name)) # gmapT :: (forall b. Data b => b -> b) -> NamedF f a name -> NamedF f a name # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NamedF f a name -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NamedF f a name -> r # gmapQ :: (forall d. Data d => d -> u) -> NamedF f a name -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> NamedF f a name -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NamedF f a name -> m (NamedF f a name) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NamedF f a name -> m (NamedF f a name) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NamedF f a name -> m (NamedF f a name) # | |
(Show a, KnownSymbol name) => Show (NamedF Identity a name) Source # | |
NFData (f a) => NFData (NamedF f a name) Source # | |
(KnownSymbol name, Buildable (f a)) => Buildable (NamedF f a name) Source # | |
Eq (f a) => Eq (NamedF f a name) Source # | |
Ord (f a) => Ord (NamedF f a name) Source # | |
compare :: NamedF f a name -> NamedF f a name -> Ordering # (<) :: NamedF f a name -> NamedF f a name -> Bool # (<=) :: NamedF f a name -> NamedF f a name -> Bool # (>) :: NamedF f a name -> NamedF f a name -> Bool # (>=) :: NamedF f a name -> NamedF f a name -> Bool # max :: NamedF f a name -> NamedF f a name -> NamedF f a name # min :: NamedF f a name -> NamedF f a name -> NamedF f a name # |