Skip to content

Commit

Permalink
Improve Plutarch.Monadic
Browse files Browse the repository at this point in the history
  • Loading branch information
L-as committed Jan 17, 2022
1 parent 9999308 commit bd52f79
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 11 deletions.
12 changes: 7 additions & 5 deletions 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
9 changes: 5 additions & 4 deletions examples/Examples/Api.hs
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions examples/Examples/List.hs
Expand Up @@ -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)))"
]

0 comments on commit bd52f79

Please sign in to comment.