morley-1.20.0: Developer tools for the Michelson Language
Safe HaskellSafe-Inferred
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 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 #

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 #

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

FromJSON a => FromJSON (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] #

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

Defined in Morley.Util.Named

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 #

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

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

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 #

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 #

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

Defined in Morley.AsRPC

Associated Types

type AsRPC (NamedF Identity a name) Source #

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

Defined in Morley.AsRPC

Associated Types

type AsRPC (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 # 
Instance details

Defined in Morley.Michelson.Typed.Haskell.Doc

Associated Types

type TypeDocFieldDescriptions (NamedF f a n) :: FieldDescriptions 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 #

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 #

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

Defined in Morley.Util.Named

Methods

build :: NamedF f a name -> Doc

buildList :: [NamedF f a name] -> Doc

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

Defined in Morley.AsRPC

type AsRPC (NamedF Identity a name) = NamedF Identity (AsRPC a) name
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 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 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 ToT (NamedF Maybe a name) Source # 
Instance details

Defined in Morley.Michelson.Typed.Haskell.Value

type ToT (NamedF Maybe a name) = ToT (Maybe a)

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

f ~ Defaults => Default (Param f) Source # 
Instance details

Methods

def :: Param f #

FromJSON a => FromJSON (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] #

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

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 #

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

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

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 #

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 #

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

Methods

build :: NamedF f a name -> Doc

buildList :: [NamedF f a name] -> Doc