From bd52f79ac0d830010efdbd7af51bc170a4c3d198 Mon Sep 17 00:00:00 2001 From: Las Safin Date: Mon, 17 Jan 2022 12:11:15 +0000 Subject: [PATCH] Improve Plutarch.Monadic --- Plutarch/Monadic.hs | 12 +++++++----- examples/Examples/Api.hs | 9 +++++---- examples/Examples/List.hs | 4 ++-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Plutarch/Monadic.hs b/Plutarch/Monadic.hs index 9a621c5bf..74c52f2c4 100644 --- a/Plutarch/Monadic.hs +++ b/Plutarch/Monadic.hs @@ -1,14 +1,16 @@ -module Plutarch.Monadic ((>>=), fail) where +module Plutarch.Monadic ((>>=), (>>), fail) where -import Prelude hiding (fail, (>>=)) +import Prelude hiding (fail, (>>), (>>=)) import Data.String (fromString) -import Plutarch (PMatch) import Plutarch.Prelude import Plutarch.Trace (ptrace) -(>>=) :: PMatch a => Term s a -> (a s -> Term s b) -> Term s b -(>>=) = pmatch +(>>=) :: a -> a +(>>=) = id + +(>>) :: a -> a +(>>) = id fail :: String -> Term s a fail msg = ptrace (fromString msg) perror diff --git a/examples/Examples/Api.hs b/examples/Examples/Api.hs index 1935d9062..7e7327356 100644 --- a/examples/Examples/Api.hs +++ b/examples/Examples/Api.hs @@ -100,18 +100,19 @@ sym = "c0" _getTxInfo :: Term s (PScriptContext :--> PAsData PTxInfo) _getTxInfo = plam $ \x -> P.do - PScriptContext c <- x + PScriptContext c <- pmatch x pindexDataList (Proxy @0) # c _getMint :: Term s (PTxInfo :--> PAsData PValue) _getMint = plam $ \x -> P.do - PTxInfo i <- x + PTxInfo i <- pmatch x pindexDataList (Proxy @3) # i _getInputs :: Term s (PTxInfo :--> PAsData (PBuiltinList (PAsData PTxInInfo))) _getInputs = plam $ \x -> P.do - PTxInfo i <- x - pindexDataList (Proxy @0) # i + PTxInfo i <- pmatch x + i' <- plet i + pindexDataList (Proxy @0) # i' {- -- | Get first validator from TxInInfo diff --git a/examples/Examples/List.hs b/examples/Examples/List.hs index e61165823..e395ee894 100644 --- a/examples/Examples/List.hs +++ b/examples/Examples/List.hs @@ -69,7 +69,7 @@ tests = do #== pconstant 0 , testCase "pmatch" $ do let t = P.do - _ <- integerList [1, 3, 1] + _ <- pmatch $ integerList [1, 3, 1] perror - in printTerm t @?= "" + in printTerm t @?= "(program 1.0.0 ((\\i0 -> (\\i0 -> i2 (\\i0 -> i2 i2 i1)) (\\i0 -> i2 (\\i0 -> i2 i2 i1))) (\\i0 -> \\i0 -> force (force (force chooseList) i1 (delay (\\i0 -> \\i0 -> force i1)) (delay ((\\i0 -> \\i0 -> \\i0 -> \\i0 -> i2 i4 i3) (force headList i1) (i2 (force tailList i1)))))) [1,3,1] (\\i0 -> \\i0 -> error) (delay error)))" ]