aboutsummaryrefslogtreecommitdiff
path: root/comparison/Inpla/src/bsort-40000-reuse.in
diff options
context:
space:
mode:
Diffstat (limited to 'comparison/Inpla/src/bsort-40000-reuse.in')
-rw-r--r--comparison/Inpla/src/bsort-40000-reuse.in24
1 files changed, 24 insertions, 0 deletions
diff --git a/comparison/Inpla/src/bsort-40000-reuse.in b/comparison/Inpla/src/bsort-40000-reuse.in
new file mode 100644
index 0000000..8b6a386
--- /dev/null
+++ b/comparison/Inpla/src/bsort-40000-reuse.in
@@ -0,0 +1,24 @@
+// Bubble sort
+BS(ret) >< [] => ret~[];
+BS(ret) >< x:xs => (*L)BS(ret)~cnt, (*R)B(cnt, x)~xs;
+BS(ret) >< M(x) => ret~x;
+
+B(ret, int x) >< [] => ret~M([x]);
+B(ret, int x) >< M(w) => ret~M(x:w);
+B(ret, int x) >< (int y):ys
+| x<y => ret~(*R)(x:cnt), (*L)B(cnt, y)~ys
+| _ => ret~(*R)(y:cnt), (*L)B(cnt, x)~ys;
+
+
+
+
+const LIST_ELEM=40000;
+
+MkRandList(ret) >< (int n)
+| n>0 => ret~(rd:cnt), (*L)MkRandList(cnt)~(n-1)
+ where rd=rand(10000)
+| _ => ret~[];
+
+MkRandList(cnt)~(LIST_ELEM),
+BS(ret)~cnt;
+ret;