module Lorentz.Test.Consumer
( contractConsumer
) where
import Lorentz.Base
import Lorentz.Instr
import Lorentz.Macro
import Lorentz.Run
contractConsumer :: Contract cp [cp]
contractConsumer :: Contract cp [cp]
contractConsumer = ContractCode cp [cp] -> Contract cp [cp]
forall cp st. ContractCode cp st -> Contract cp st
defaultContract (ContractCode cp [cp] -> Contract cp [cp])
-> ContractCode cp [cp] -> Contract cp [cp]
forall a b. (a -> b) -> a -> b
$
((cp, [cp]) & '[]) :-> (cp & ([cp] & '[]))
forall a b (s :: [*]). ((a, b) & s) :-> (a & (b & s))
unpair (((cp, [cp]) & '[]) :-> (cp & ([cp] & '[])))
-> ((cp & ([cp] & '[])) :-> ([cp] & '[]))
-> ((cp, [cp]) & '[]) :-> ([cp] & '[])
forall (a :: [*]) (b :: [*]) (c :: [*]).
(a :-> b) -> (b :-> c) -> a :-> c
# (cp & ([cp] & '[])) :-> ([cp] & '[])
forall a (s :: [*]). (a & (List a & s)) :-> (List a & s)
cons (((cp, [cp]) & '[]) :-> ([cp] & '[]))
-> (([cp] & '[]) :-> (List Operation & ([cp] & '[])))
-> ((cp, [cp]) & '[]) :-> (List Operation & ([cp] & '[]))
forall (a :: [*]) (b :: [*]) (c :: [*]).
(a :-> b) -> (b :-> c) -> a :-> c
# ([cp] & '[]) :-> (List Operation & ([cp] & '[]))
forall p (s :: [*]). KnownValue p => s :-> (List p & s)
nil (((cp, [cp]) & '[]) :-> (List Operation & ([cp] & '[])))
-> ((List Operation & ([cp] & '[]))
:-> ((List Operation, [cp]) & '[]))
-> ContractCode cp [cp]
forall (a :: [*]) (b :: [*]) (c :: [*]).
(a :-> b) -> (b :-> c) -> a :-> c
# (List Operation & ([cp] & '[])) :-> ((List Operation, [cp]) & '[])
forall a b (s :: [*]). (a & (b & s)) :-> ((a, b) & s)
pair