funcons-simple-0.1.0.3: tests/Advanced/Advanced4.fct
initialise-binding initialise-storing initialise-giving finalise-failing finalise-throwing scope
(collateral (bind
("fib_aux",
allocate-variable (functions
(tuples ((values)*),
values))),
bind
("fib",
allocate-variable (functions
(tuples ((values)*),
values))),
bind
("main",
allocate-variable (functions
(tuples ((values)*),
values)))),
sequential (assign
(bound ("fib_aux"),
function closure (scope
(match
(given,
tuple (pattern closure (bind
("i",
allocate-initialised-variable
(values,
given))),
pattern closure (bind
("m",
allocate-initialised-variable
(values,
given))),
pattern closure (bind
("n",
allocate-initialised-variable
(values,
given))))),
handle-return (if-else
(is-equal
(assigned (bound ("i")),
decimal-natural ("1")),
return (assigned (bound ("n"))),
return (apply
(assigned (bound ("fib_aux")),
tuple (integer-subtract
(assigned (bound ("i")),
decimal-natural ("1")),
assigned (bound ("n")),
integer-add
(assigned (bound ("m")),
assigned (bound ("n"))))))))))),
assign
(bound ("fib"),
function closure (scope
(match
(given,
tuple (pattern closure (bind
("n",
allocate-initialised-variable
(values,
given))))),
handle-return (if-else
(is-equal
(assigned (bound ("n")),
decimal-natural ("0")),
return (decimal-natural ("0")),
return (apply
(assigned (bound ("fib_aux")),
tuple (assigned (bound ("n")),
decimal-natural ("0"),
decimal-natural ("1"))))))))),
assign
(bound ("main"),
function closure (scope
(match
(given,
tuple ()),
handle-return (scope
(bind
("i",
allocate-initialised-variable
(values,
decimal-natural ("1"))),
while
(is-less
(assigned (bound ("i")),
decimal-natural ("8")),
sequential
(print (apply
(assigned (bound ("fib")),
tuple (assigned (bound ("i"))))),
effect (give
(bound ("i"),
sequential
(assign
(given,
integer-add
(assigned (given),
1)),
assigned (given))))))))))),
apply
(assigned (bound ("main")),
tuple ())))