+
+-- | Calculates nth fibonacci (5 by default) and stores result in 'x'
+fibonacci :: Statement
+fibonacci = Seq (Assign "n" (Const (I 5)))
+ (Seq (Assign "x" (Const (I 1)))
+ (Seq (Assign "y" (Const (I 0)))
+ (While (Gt (Var "n") (Const (I 0)))
+ (Seq (Assign "tmp" (Var "x"))
+ (Seq (Assign "x" (Add (Var "x") (Var "y")))
+ (Seq (Assign "y" (Var "x"))
+ (Assign "n" (Sub (Var "n") (Const (I 1))))))))))