morley-1.16.3: Developer tools for the Michelson Language
Safe HaskellNone
LanguageHaskell2010

Morley.Util.Named

Description

Additional functionality for named package.

Synopsis

Documentation

(!) :: WithParam p fn fn' => fn -> Param p -> fn' infixl 9 #

Supply a parameter to a function:

function ! #param_name value
function ! #x 7 ! #y 42 ! defaults

This is an infix version of with.

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 #

type family NamedInner (n :: Type) where ... Source #

Equations

NamedInner (NamedF f a _) = ApplyNamedFunctor f a 

class KnownNamedFunctor f where Source #

Methods

namedL :: Label name -> Iso' (NamedF f a name) (ApplyNamedFunctor f a) Source #

Isomorphism between named entity and the entity itself.

Instances

Instances details
KnownNamedFunctor Maybe Source # 
Instance details

Defined in Morley.Util.Named

Methods

namedL :: forall (name :: Symbol) a. Label name -> Iso' (NamedF Maybe a name) (ApplyNamedFunctor Maybe a) Source #

KnownNamedFunctor Identity Source # 
Instance details

Defined in Morley.Util.Named

Methods

namedL :: forall (name :: Symbol) a. Label name -> Iso' (NamedF Identity a name) (ApplyNamedFunctor Identity a) Source #

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"

Constructors

ArgF (f a)

Match on an F-argument without specifying its name. See also: argF.

Bundled Patterns

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 arg in a view pattern:

>>> :{
let someFunc (arg #arg1 -> arg1) (arg #arg2 -> arg2) = arg1 + arg2
in someFunc ! #arg1 1 ! #arg2 2
:}
3
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 argDef or argF in a view pattern:

>>> :{
let someFunc (argDef #arg1 "" ->arg1) (argDef #arg2 "" -> arg2) = arg1 <> arg2
in someFunc ! #arg1 "asd" ! #arg2 "efg"
:}
"asdefg"
pattern N :: a -> NamedF Identity a name

Deprecated: Please use view patterns with arg instead.

Convenience pattern synonym, use this instead of arg with ViewPatterns when the name can be inferred.

pattern M :: Maybe a -> NamedF Maybe a name

Deprecated: Please use view patterns with argF instead.

Convenience pattern synonym for NamedF Maybe name a, use this instead of argF with ViewPatterns when the name can be inferred.

pattern SomeArg :: a -> NamedF Maybe a name

Deprecated: Please use view patterns with argF instead.

Convenience pattern synonym, use this instead of argF with ViewPatterns when the name can be inferred. Matches only on Just values

pattern NoArg :: NamedF Maybe a name

Deprecated: Please use view patterns with argF instead.

Convenience pattern synonym, use this instead of argF with ViewPatterns when the name can be inferred. Matches only on Nothing values

pattern Arg :: a -> name :! a

Match on an argument without specifying its name. See also: arg.

Instances

Instances details
(name ~ name', a ~ a', InjValue f) => IsLabel name (a -> NamedF f a' name') 
Instance details

Defined in Named.Internal

Methods

fromLabel :: a -> NamedF f a' name' #

Eq (f a) => Eq (NamedF f a name) Source # 
Instance details

Defined in Morley.Util.Named

Methods

(==) :: NamedF f a name -> NamedF f a name -> Bool #

(/=) :: NamedF f a name -> NamedF f a name -> Bool #

(Typeable f, Typeable a, KnownSymbol name, Data (f a)) => Data (NamedF f a name) Source # 
Instance details

Defined in Morley.Util.Named

Methods

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) #

Ord (f a) => Ord (NamedF f a name) Source # 
Instance details

Defined in Morley.Util.Named

Methods

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 #

(Show a, KnownSymbol name) => Show (NamedF Identity a name) Source # 
Instance details

Defined in Morley.Util.Named

Methods

showsPrec :: Int -> NamedF Identity a name -> ShowS #

show :: NamedF Identity a name -> String #

showList :: [NamedF Identity a name] -> ShowS #

NFData (f a) => NFData (NamedF f a name) Source # 
Instance details

Defined in Morley.Util.Named

Methods

rnf :: NamedF f a name -> () #

ToJSON a => ToJSON (NamedF Maybe a name) Source # 
Instance details

Defined in Morley.Util.Named

Methods

toJSON :: NamedF Maybe a name -> Value #

toEncoding :: NamedF Maybe a name -> Encoding #

toJSONList :: [NamedF Maybe a name] -> Value #

toEncodingList :: [NamedF Maybe a name] -> Encoding #

ToJSON a => ToJSON (NamedF Identity a name) Source # 
Instance details

Defined in Morley.Util.Named

FromJSON a => FromJSON (NamedF Maybe a name) Source # 
Instance details

Defined in Morley.Util.Named

Methods

parseJSON :: Value -> Parser (NamedF Maybe a name) #

parseJSONList :: Value -> Parser [NamedF Maybe a name] #

FromJSON a => FromJSON (NamedF Identity a name) Source # 
Instance details

Defined in Morley.Util.Named

(KnownSymbol name, Buildable (f a)) => Buildable (NamedF f a name) Source # 
Instance details

Defined in Morley.Util.Named

Methods

build :: NamedF f a name -> Builder #

IsoValue a => IsoValue (NamedF Maybe a name) Source # 
Instance details

Defined in Morley.Michelson.Typed.Haskell.Value

Associated Types

type ToT (NamedF Maybe a name) :: T Source #

Methods

toVal :: NamedF Maybe a name -> Value (ToT (NamedF Maybe a name)) Source #

fromVal :: Value (ToT (NamedF Maybe a name)) -> NamedF Maybe a name Source #

IsoValue a => IsoValue (NamedF Identity a name) Source # 
Instance details

Defined in Morley.Michelson.Typed.Haskell.Value

Associated Types

type ToT (NamedF Identity a name) :: T Source #

Methods

toVal :: NamedF Identity a name -> Value (ToT (NamedF Identity a name)) Source #

fromVal :: Value (ToT (NamedF Identity a name)) -> NamedF Identity a name Source #

(TypeHasDoc (ApplyNamedFunctor f a), KnownSymbol n, KnownIsoT (ApplyNamedFunctor f Integer), Typeable f, Typeable a) => TypeHasDoc (NamedF f a n) Source # 
Instance details

Defined in Morley.Michelson.Typed.Haskell.Doc

Associated Types

type TypeDocFieldDescriptions (NamedF f a n) :: FieldDescriptions Source #

HasRPCRepr a => HasRPCRepr (NamedF Maybe a name) Source # 
Instance details

Defined in Morley.AsRPC

Associated Types

type AsRPC (NamedF Maybe a name) Source #

HasRPCRepr a => HasRPCRepr (NamedF Identity a name) Source # 
Instance details

Defined in Morley.AsRPC

Associated Types

type AsRPC (NamedF Identity a name) Source #

type ToT (NamedF Maybe a name) Source # 
Instance details

Defined in Morley.Michelson.Typed.Haskell.Value

type ToT (NamedF Maybe a name) = ToT (Maybe a)
type ToT (NamedF Identity a name) Source # 
Instance details

Defined in Morley.Michelson.Typed.Haskell.Value

type ToT (NamedF Identity a name) = ToT (Identity a)
type TypeDocFieldDescriptions (NamedF f a n) Source # 
Instance details

Defined in Morley.Michelson.Typed.Haskell.Doc

type TypeDocFieldDescriptions (NamedF f a n) = '[] :: [(Symbol, (Maybe Symbol, [(Symbol, Symbol)]))]
type AsRPC (NamedF Maybe a name) Source # 
Instance details

Defined in Morley.AsRPC

type AsRPC (NamedF Maybe a name) = NamedF Maybe (AsRPC a) name
type AsRPC (NamedF Identity a name) Source # 
Instance details

Defined in Morley.AsRPC

type AsRPC (NamedF Identity a name) = NamedF Identity (AsRPC a) name

data Name (name :: Symbol) #

A proxy for a name, intended for use with -XOverloadedLabels:

#verbose :: Name "verbose"

Instances

Instances details
name ~ name' => IsLabel name' (Name name) 
Instance details

Defined in Named.Internal

Methods

fromLabel :: Name name #

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

argF :: forall (name :: Symbol) f a. Name name -> NamedF f a name -> f a #

argF is similar to arg: it unwraps a named parameter with the specified name. The difference is that the result of argF is inside an arity wrapper, which is Identity for normal parameters and Maybe for optional parameters.

argDef :: forall (name :: Symbol) a. Name name -> a -> (name :? a) -> a #

A variation of arg for optional arguments. Requires a default value to handle the case when the optional argument was omitted:

fn (argDef #answer 42 -> ans) = ...

In case you want to get a value wrapped in Maybe instead, use argF or ArgF.

Orphan instances

Eq (f a) => Eq (NamedF f a name) Source # 
Instance details

Methods

(==) :: NamedF f a name -> NamedF f a name -> Bool #

(/=) :: NamedF f a name -> NamedF f a name -> Bool #

(Typeable f, Typeable a, KnownSymbol name, Data (f a)) => Data (NamedF f a name) Source # 
Instance details

Methods

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) #

Ord (f a) => Ord (NamedF f a name) Source # 
Instance details

Methods

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 #

(Show a, KnownSymbol name) => Show (NamedF Identity a name) Source # 
Instance details

Methods

showsPrec :: Int -> NamedF Identity a name -> ShowS #

show :: NamedF Identity a name -> String #

showList :: [NamedF Identity a name] -> ShowS #

NFData (f a) => NFData (NamedF f a name) Source # 
Instance details

Methods

rnf :: NamedF f a name -> () #

ToJSON a => ToJSON (NamedF Maybe a name) Source # 
Instance details

Methods

toJSON :: NamedF Maybe a name -> Value #

toEncoding :: NamedF Maybe a name -> Encoding #

toJSONList :: [NamedF Maybe a name] -> Value #

toEncodingList :: [NamedF Maybe a name] -> Encoding #

ToJSON a => ToJSON (NamedF Identity a name) Source # 
Instance details

FromJSON a => FromJSON (NamedF Maybe a name) Source # 
Instance details

Methods

parseJSON :: Value -> Parser (NamedF Maybe a name) #

parseJSONList :: Value -> Parser [NamedF Maybe a name] #

FromJSON a => FromJSON (NamedF Identity a name) Source # 
Instance details

(KnownSymbol name, Buildable (f a)) => Buildable (NamedF f a name) Source # 
Instance details

Methods

build :: NamedF f a name -> Builder #