diff options
author | Camil Staps | 2016-05-10 21:26:34 +0200 |
---|---|---|
committer | Camil Staps | 2016-05-10 21:26:34 +0200 |
commit | 200d22269bdaaba0666962f5f0099faae26d7bf4 (patch) | |
tree | 73b7ea4bdc8820cc8fa92fa8eddf8656fd679b73 /paper/While/Simple.icl | |
parent | Straightforward While lexer, parser and interpreter (diff) |
lint; cleanup While
Diffstat (limited to 'paper/While/Simple.icl')
-rw-r--r-- | paper/While/Simple.icl | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/paper/While/Simple.icl b/paper/While/Simple.icl index 9138f1f..84ffce7 100644 --- a/paper/While/Simple.icl +++ b/paper/While/Simple.icl @@ -15,8 +15,15 @@ where instance run Stm where - run (Ass v e) st = eval e st >>= \r -> pure (\w -> if (w==v) (pure r) (st w)) - run (If b s1 s2) st = eval b st >>= \r -> run (if r s1 s2) st - run w=:(While b s) st = eval b st >>= \r -> if r (run s st >>= \st` -> run w st`) (pure st) - run Skip st = pure st - run (Compose s1 s2) st = run s1 st >>= \st` -> run s2 st` + run (Ass v e) st + = eval e st >>= \r -> pure (\w -> if (w==v) (pure r) (st w)) + run (If b s1 s2) st + = eval b st >>= \r -> run (if r s1 s2) st + run w=:(While b s) st + = eval b st >>= \r -> if r + (run s st >>= \st` -> run w st`) + (pure st) + run Skip st + = pure st + run (Compose s1 s2) st + = run s1 st >>= run s2 |