Execute HQ9+: Difference between revisions

Content added Content deleted
Line 245: Line 245:
<lang ela>open Con
<lang ela>open Con
open Char
open Char
open Cell


let eval src = eval' src
let eval src = eval' src
Line 252: Line 253:
| be '9' = n! $ eval' xs
| be '9' = n! $ eval' xs
| be '+' = p! $ eval' xs
| be '+' = p! $ eval' xs
| else = fail ("Unrecognized " ++ show x)
| else = fail ("Unrecognized " ++ x)
where ref = {!val=0}
where ref = cell 0
et be c = upper x == c
et be c = upper x == c
et h () = writen "Hello, world!"
et h () = writen "Hello, world!"
et q () = writen src
et q () = writen src
et p () = ref.val <- ref.val + 1
et p () = mutate (valueof ref + 1) ref
et n () = bottles [99,98..1]
et n () = bottles [99,98..1]
where bottles [] = ()
where bottles [] = ()