Provide more building blocks and extend example

This commit is contained in:
2024-09-21 23:11:31 +02:00
parent dad5724af8
commit 5bbcc924b7
5 changed files with 17 additions and 8 deletions

View File

@@ -2,6 +2,8 @@
module ComputationM
( ComputationM
, Token
, tupleTokens
, zipTokens
, evalComputationM
, inject
, mapComputationM
@@ -30,10 +32,17 @@ deriving instance (Show a, Show b) => Show (TypedRun a b)
data Token a where
Token :: Int -> Token a
TupleToken :: Token a -> Token b -> Token (a, b)
ZipToken :: Token [a] -> Token [b] -> Token [(a, b)]
NoToken :: Token ()
deriving instance Show (Token a)
tupleTokens :: (Show a, Show b) => Token a -> Token b -> Token (a, b)
tupleTokens = TupleToken
zipTokens :: (Show a, Show b) => Token [a] -> Token [b] -> Token [(a, b)]
zipTokens = ZipToken
data Dependency a b = Dependency (Token a) (TypedRun a b) (Token b)
deriving (Show)