import raw ("scripts/containers/containers-tests.assembly.lp"). Test = type predicate{ common }. FnAnns = type predicate{ test(kind:: Test) } min = function(x:: [int]; csize(5)):: int { loop fold((x:: [int]; csize(5))->el:: int, 1000->min):: int { if (el < min):: int { el } else { min } } } min2 = function(x:: [int]; fly(csize(5))):: int { loop fold((x:: [int]; fly(csize(5)))->el:: int, 1000->min):: int { if (el < min):: int { el } else { min } } } fn-ArrayArg1 = function:: int; test(common()) { a = {3, 2, 1, 4, 5}:: [int]; csize(5). min(a) } fn-FlyArg1 = function:: int; test(common()) { a = {3, 2, 1, 4, 5}:: [int]; csize(5). b = loop map(a->x:: int):: [int]; fly(csize(5)) { 8 * x :: int }. min2(b) } fn-Range1 = function:: int; test(common()) { range = [1..5]:: [int]; range(). loop fold(range->x:: int, 0->sum):: int {sum + x} } fn-Range2 = function:: int; test(common()) { range1 = [1..5]:: [int]; range(). range2 = loop map (range1->x:: int):: [int]; fly(range()) {2 * x:: int}. loop fold(range2->x:: int, 0->sum):: int {sum + x} } fn-GenRange1 = function:: [int]; range() { [1..5]:: [int]; range() } fn-RetRange1 = function:: int; test(common()) { loop fold((fn-GenRange1()::[int]; range()) -> x:: int, 0->sum):: int { sum + x } } /* reorder = function(aggrSrc:: [int], idxs::[int]):: [int] { loop map(idxs->idx)::[int] { aggrSrc[idx]) } } reverse = function(aggrSrc::[int])::[int] { sizeDst = 5:: int. idxsDst = intrinsic keys(aggrSrc):: [int]. idxsTnsf = loop map(idxsDst-> idx:: int):: [int] { sizeDst - idx - 1 } reorder(aggrSrc, idxsTnsf) } */