aboutsummaryrefslogtreecommitdiff
path: root/Smurf.dcl
diff options
context:
space:
mode:
authorCamil Staps2016-05-26 17:23:16 +0200
committerCamil Staps2016-05-26 17:23:16 +0200
commitba10d1b5ec24a33059030c16f82558fe45e165d2 (patch)
tree41f438c3574d3b75ec9e03080a78ba26e63e5b2b /Smurf.dcl
parentfix toString for Push (diff)
Overloading IO functions in step; POC derivation tree generation
Diffstat (limited to 'Smurf.dcl')
-rw-r--r--Smurf.dcl20
1 files changed, 18 insertions, 2 deletions
diff --git a/Smurf.dcl b/Smurf.dcl
index 7d75a6d..25ea30b 100644
--- a/Smurf.dcl
+++ b/Smurf.dcl
@@ -24,6 +24,15 @@ from Data.Maybe import ::Maybe
, store :: Store
}
+:: IO io = IO (io -> .(String, io)) (String io -> io)
+
+:: ListIO = { input :: [String]
+ , output :: [String]
+ }
+
+:: Transition = (-->) infix 1 (Program, [String], State) ([String], [String], State)
+:: DerivationTree :== [Transition]
+
derive gEq Stm
instance == Stm
@@ -34,6 +43,13 @@ instance fromChar Stm
instance zero State
instance toString State
-step :: !Program State !*File -> *(Maybe (!Program, State), *File)
-run :: !Program State *File -> *(Maybe State, *File)
+instance zero ListIO
+
+instance toString Transition
+instance toString DerivationTree
+
+step :: !Program State u:io u:(IO u:io) -> u:(Maybe (!Program, State), u:io)
+run :: !Program State io (IO io) -> (Maybe State, io)
+listIO :: IO ListIO
+tree :: !Program !State !ListIO (IO ListIO) -> Maybe DerivationTree