funcons-simple-0.1.0.3: tests/Advanced/Advanced3.fct
initialise-binding initialise-storing initialise-giving finalise-failing finalise-throwing scope
(collateral (bind
("main",
allocate-variable (functions
(tuples ((values)*),
values))),
bind
("insertion_sort",
allocate-variable (functions
(tuples ((values)*),
values)))),
sequential (assign
(bound ("main"),
function closure (scope
(match
(given,
tuple ()),
handle-return (scope
(bind
("a",
allocate-nested-vectors (decimal-natural ("5"))),
sequential
(effect (give
(decimal-natural ("5"),
sequential
(assign
(checked index
(integer-add
(1,
decimal-natural ("0")),
vector-elements (assigned (bound ("a")))),
given),
given))),
effect (give
(decimal-natural ("4"),
sequential
(assign
(checked index
(integer-add
(1,
decimal-natural ("1")),
vector-elements (assigned (bound ("a")))),
given),
given))),
effect (give
(decimal-natural ("1"),
sequential
(assign
(checked index
(integer-add
(1,
decimal-natural ("2")),
vector-elements (assigned (bound ("a")))),
given),
given))),
effect (give
(decimal-natural ("8"),
sequential
(assign
(checked index
(integer-add
(1,
decimal-natural ("3")),
vector-elements (assigned (bound ("a")))),
given),
given))),
effect (give
(decimal-natural ("7"),
sequential
(assign
(checked index
(integer-add
(1,
decimal-natural ("4")),
vector-elements (assigned (bound ("a")))),
given),
given))),
effect (apply
(assigned (bound ("insertion_sort")),
tuple (assigned (bound ("a"))))),
scope
(bind
("i",
allocate-initialised-variable
(values,
decimal-natural ("0"))),
while
(is-less
(assigned (bound ("i")),
length (vector-elements (assigned (bound ("a"))))),
sequential
(print (assigned (checked index
(integer-add
(1,
assigned (bound ("i"))),
vector-elements (assigned (bound ("a")))))),
effect (give
(bound ("i"),
sequential
(assign
(given,
integer-add
(assigned (given),
1)),
assigned (given))))))))))))),
assign
(bound ("insertion_sort"),
function closure (scope
(match
(given,
tuple (pattern closure (bind
("a",
allocate-initialised-variable
(values,
given))))),
handle-return (scope
(bind
("i",
allocate-initialised-variable
(values,
decimal-natural ("1"))),
while
(is-less
(assigned (bound ("i")),
length (vector-elements (assigned (bound ("a"))))),
sequential
(scope
(bind
("val_i",
allocate-initialised-variable
(values,
assigned (checked index
(integer-add
(1,
assigned (bound ("i"))),
vector-elements (assigned (bound ("a"))))))),
scope
(bind
("j",
allocate-initialised-variable
(values,
assigned (bound ("i")))),
sequential
(while
(if-else
(is-greater
(assigned (bound ("j")),
decimal-natural ("0")),
is-less
(assigned (bound ("val_i")),
assigned (checked index
(integer-add
(1,
integer-subtract
(assigned (bound ("j")),
decimal-natural ("1"))),
vector-elements (assigned (bound ("a")))))),
false),
sequential
(effect (give
(assigned (checked index
(integer-add
(1,
integer-subtract
(assigned (bound ("j")),
decimal-natural ("1"))),
vector-elements (assigned (bound ("a"))))),
sequential
(assign
(checked index
(integer-add
(1,
assigned (bound ("j"))),
vector-elements (assigned (bound ("a")))),
given),
given))),
effect (give
(integer-subtract
(assigned (bound ("j")),
decimal-natural ("1")),
sequential
(assign
(bound ("j"),
given),
given))))),
effect (give
(assigned (bound ("val_i")),
sequential
(assign
(checked index
(integer-add
(1,
assigned (bound ("j"))),
vector-elements (assigned (bound ("a")))),
given),
given)))))),
effect (give
(bound ("i"),
sequential
(assign
(given,
integer-add
(assigned (given),
1)),
assigned (given))))))))))),
apply
(assigned (bound ("main")),
tuple ())))