From b5977fe1e8e83ffc5684f89f2a5ef37729a76d37 Mon Sep 17 00:00:00 2001 From: Sergey Kurgak Date: Tue, 18 Jan 2022 17:48:18 +1100 Subject: [PATCH] Add composition of plutarch functions --- Plutarch.hs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Plutarch.hs b/Plutarch.hs index 76d5ede57..38db8d6d5 100644 --- a/Plutarch.hs +++ b/Plutarch.hs @@ -29,6 +29,7 @@ module Plutarch ( printScript, (#$), (#), + (#.), pinl, PCon (..), PMatch (..), @@ -85,6 +86,17 @@ infixl 8 # infixr 0 #$ +{- | + Composition of Plutarch level functions + + >>> f #. g #$ x + f (g x) +-} +(#.) :: Term s (b :--> c) -> Term s (a :--> b) -> Term s (a :--> c) +(#.) bc ab = plam $ \a -> bc #$ ab # a + +infixr 7 #. + {- $plam Lambda abstraction. @@ -234,3 +246,4 @@ pfix = phoistAcyclic $ plam $ \f -> (plam $ \(x :: Term s POpaque) -> f # (plam $ \(v :: Term s POpaque) -> (punsafeCoerce x) # x # v)) # punsafeCoerce (plam $ \(x :: Term s POpaque) -> f # (plam $ \(v :: Term s POpaque) -> (punsafeCoerce x) # x # v)) +