From b605f30516cc1fef04a706137dc9bc202aadc991 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 12 Apr 2016 22:01:25 +0200 Subject: Initial commit --- Smurf.dcl | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Smurf.dcl (limited to 'Smurf.dcl') diff --git a/Smurf.dcl b/Smurf.dcl new file mode 100644 index 0000000..c4f1c45 --- /dev/null +++ b/Smurf.dcl @@ -0,0 +1,28 @@ +definition module Smurf + +from StdOverloaded import class zero, class toString + +from Data.Maybe import ::Maybe + +:: Stm = Push String + | Input | Output + | Cat | Head | Tail | Quotify + | Put | Get | Exec + +:: Program :== [Stm] + +:: Stack :== [String] +:: Store :== [(String, String)] + +:: State = { stack :: Stack + , store :: Store + } + +instance toString Stm + +instance zero State +instance toString State + +step :: !Program State !*File -> *(Maybe (!Program, State), *File) +run :: !Program State *File -> *(Maybe State, *File) + -- cgit v1.2.3