module Lorentz.Lambda
( WrappedLambda(..)
, Lambda
, mkLambda
) where
import Lorentz.Annotation
import Lorentz.Base
import Morley.AsRPC (HasRPCRepr(..))
import Morley.Michelson.Typed
import Morley.Michelson.Typed.Contract (giveNotInView)
newtype WrappedLambda i o = WrappedLambda {forall (i :: [*]) (o :: [*]). WrappedLambda i o -> i :-> o
unWrappedLambda :: i :-> o}
deriving stock (Int -> WrappedLambda i o -> ShowS
[WrappedLambda i o] -> ShowS
WrappedLambda i o -> String
(Int -> WrappedLambda i o -> ShowS)
-> (WrappedLambda i o -> String)
-> ([WrappedLambda i o] -> ShowS)
-> Show (WrappedLambda i o)
forall (i :: [*]) (o :: [*]). Int -> WrappedLambda i o -> ShowS
forall (i :: [*]) (o :: [*]). [WrappedLambda i o] -> ShowS
forall (i :: [*]) (o :: [*]). WrappedLambda i o -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WrappedLambda i o] -> ShowS
$cshowList :: forall (i :: [*]) (o :: [*]). [WrappedLambda i o] -> ShowS
show :: WrappedLambda i o -> String
$cshow :: forall (i :: [*]) (o :: [*]). WrappedLambda i o -> String
showsPrec :: Int -> WrappedLambda i o -> ShowS
$cshowsPrec :: forall (i :: [*]) (o :: [*]). Int -> WrappedLambda i o -> ShowS
Show, WrappedLambda i o -> WrappedLambda i o -> Bool
(WrappedLambda i o -> WrappedLambda i o -> Bool)
-> (WrappedLambda i o -> WrappedLambda i o -> Bool)
-> Eq (WrappedLambda i o)
forall (i :: [*]) (o :: [*]).
WrappedLambda i o -> WrappedLambda i o -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WrappedLambda i o -> WrappedLambda i o -> Bool
$c/= :: forall (i :: [*]) (o :: [*]).
WrappedLambda i o -> WrappedLambda i o -> Bool
== :: WrappedLambda i o -> WrappedLambda i o -> Bool
$c== :: forall (i :: [*]) (o :: [*]).
WrappedLambda i o -> WrappedLambda i o -> Bool
Eq)
deriving newtype instance IsoValue (a :-> b) => IsoValue (WrappedLambda a b)
deriving newtype instance HasAnnotation (i :-> o) => HasAnnotation (WrappedLambda i o)
deriving newtype instance HasRPCRepr (i :-> o) => HasRPCRepr (WrappedLambda i o)
mkLambda :: (IsNotInView => i :-> o) -> WrappedLambda i o
mkLambda :: forall (i :: [*]) (o :: [*]).
(IsNotInView => i :-> o) -> WrappedLambda i o
mkLambda IsNotInView => i :-> o
i = (i :-> o) -> WrappedLambda i o
forall (i :: [*]) (o :: [*]). (i :-> o) -> WrappedLambda i o
WrappedLambda ((i :-> o) -> WrappedLambda i o) -> (i :-> o) -> WrappedLambda i o
forall a b. (a -> b) -> a -> b
$ (IsNotInView => i :-> o) -> i :-> o
forall r. (IsNotInView => r) -> r
giveNotInView IsNotInView => i :-> o
i
type Lambda i o = WrappedLambda '[i] '[o]