5 -- | Infinitely increments and prints x (can't be written to a file sadly)
7 increment = Seq (Assign "x" (Const (I 0))) loop
8 where loop = Seq (Print (Var "x"))
9 (Seq (Assign "x" (Add (Var "x") (Const (I 1))))
12 -- | Catches a type error and prints 0
14 tryCatch = Try (Print (Add (Const (I 3)) (Const (B True))))
17 -- | Calculates nth fibonacci (5 by default) and stores result in 'x'
18 fibonacci :: Statement
19 fibonacci = Seq (Assign "n" (Const (I 5)))
20 (Seq (Assign "x" (Const (I 1)))
21 (Seq (Assign "y" (Const (I 0)))
22 (While (Gt (Var "n") (Const (I 0)))
23 (Seq (Assign "tmp" (Var "x"))
24 (Seq (Assign "x" (Add (Var "x") (Var "y")))
25 (Seq (Assign "y" (Var "x"))
26 (Assign "n" (Sub (Var "n") (Const (I 1))))))))))
29 boolNot = Print (Not (Const (B False)))