diff options
author | Camil Staps | 2016-06-03 00:39:37 +0200 |
---|---|---|
committer | Camil Staps | 2016-06-03 00:39:37 +0200 |
commit | 6ecadcb8571712536f9d121264f67f30f7bb0147 (patch) | |
tree | 0542e10ca752f538195095713ca786ab494335b6 /paper/While/Simple.icl | |
parent | Update example program (diff) |
First version almost finished
Diffstat (limited to 'paper/While/Simple.icl')
-rw-r--r-- | paper/While/Simple.icl | 13 |
1 files changed, 7 insertions, 6 deletions
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 |