From 49960d8950d001a372a0abde670a66ee60026957 Mon Sep 17 00:00:00 2001 From: Shinya Sato Date: Tue, 5 Mar 2024 18:19:27 +0900 Subject: v0.12.0 --- sample/reduce.in | 57 -------------------------------------------------------- 1 file changed, 57 deletions(-) delete mode 100644 sample/reduce.in (limited to 'sample/reduce.in') diff --git a/sample/reduce.in b/sample/reduce.in deleted file mode 100644 index 90ba145..0000000 --- a/sample/reduce.in +++ /dev/null @@ -1,57 +0,0 @@ -// foldr, foldl functions - - -// target functions -// Here, we use built-in agents Add and Sub - - -// -------------------------------------------------------------------- -// foldr f v [x0, x1, ..., xn] = f(x0, f(x1, ... f(xn-1, f(xn, v))...)) -// -------------------------------------------------------------------- -foldr(r, f, v) >< x:xs => foldr_Cons(r,f,v,x)~xs; -foldr_Cons(r,f,v,x) >< [] => f~((r,x),v); -foldr_Cons(r,f,v,x) >< y:ys => - Dup(f1,f2)~f, - foldr(w, f2, v)~y:ys, - f1~((r,x),w); - -// -------------------------------------------------------------------- -// foldl f v [x0, x1, ..., xn] = f( ... f(f(v,x0),x1) ..., xn) -// -------------------------------------------------------------------- -foldl(r, f, v) >< x:xs => foldl_Cons(r,f,v,x)~xs; -foldl_Cons(r,f,v,x) >< [] => f~((r,v),x); -foldl_Cons(r,f,v,x) >< y:ys => - Dup(f1,f2)~f, - f1~((w,v),x), - foldl(r, f2, w)~y:ys; - - - - -// ---------- main ---------- - -// foldr f v [x0, x1, ..., xn] = f(x0, f(x1, ... f(xn-1, f(xn, v))...)) -// foldr plus 10 [1,2,3] = plus(1, plus(2, plus(3, 10))) = 16 - -foldr(r, %Add, 10) ~ [1,2,3]; -r; free r; // r ->16 - - -// foldr subt 1 [30,20,10] = subt(30, subt(20, subt(10, 1))) -// = 30-(20-(10-1)) = 30-(20-9) = 30-11 = 19 - -foldr(r, %Sub, 1) ~ [30,20,10]; -r; free r; // r ->19 - - - -// foldl f v [x0, x1, ..., xn] = f( ... f(f(v,x0),x1) ..., xn) -// foldl plus 10 [1,2,3] = plus(3, plus(2, plus(1, 10))) = 16 - -foldl(r, %Add, 10) ~ [1,2,3]; -r; free r; // r ->16 - - -// foldl subt 10 [1,2,3] = subt(subt(subt(10,1),2),3) = ((10-1)-2)-3 = 4 -foldl(r, %Sub, 10) ~ [1,2,3]; -r; free r; // r ->4 -- cgit v1.2.3