From 6ecadcb8571712536f9d121264f67f30f7bb0147 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Fri, 3 Jun 2016 00:39:37 +0200 Subject: First version almost finished --- paper/While/Simple.icl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'paper/While/Simple.icl') diff --git a/paper/While/Simple.icl b/paper/While/Simple.icl index 4c226c9..7ef042f 100644 --- a/paper/While/Simple.icl +++ b/paper/While/Simple.icl @@ -15,15 +15,16 @@ where instance run Stm where - run (Ass v e) st - = pure (\w -> if (w==v) (eval e st) (st w)) - run (If b s1 s2) st + run :: Stm State -> Either Error State + run (Ass v e) st // Assign e to v + = pure (\w -> if (w == v) (eval e st) (st w)) + run (If b s1 s2) st // If b then s1 else s2 = eval b st >>= \r -> run (if r s1 s2) st - run w=:(While b s) st + run w=:(While b s) st // While b do s = eval b st >>= \r -> if r (run s st >>= run w) (pure st) - run Skip st + run Skip st // Skip = pure st - run (Compose s1 s2) st + run (Compose s1 s2) st // s1 ; s2 = run s1 st >>= run s2 -- cgit v1.2.3