From ba10d1b5ec24a33059030c16f82558fe45e165d2 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Thu, 26 May 2016 17:23:16 +0200 Subject: Overloading IO functions in step; POC derivation tree generation --- Smurf.dcl | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'Smurf.dcl') 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 -- cgit v1.2.3