2010-07-09 10:35:54 +02:00
|
|
|
const n:int = 42
|
|
|
|
|
|
|
|
node plusone(a:int) returns (o:int)
|
|
|
|
let
|
|
|
|
o = a+1;
|
2010-07-09 13:27:06 +02:00
|
|
|
tel
|
2010-07-09 10:35:54 +02:00
|
|
|
|
|
|
|
node g(a:int^n) returns (o:int^n)
|
|
|
|
let
|
2010-07-09 13:27:06 +02:00
|
|
|
o = map plusone <<n>>(a);
|
2010-07-09 10:35:54 +02:00
|
|
|
tel
|
|
|
|
|
|
|
|
node sum_acc (a, acc_in:int) returns (acc_out:int)
|
|
|
|
let
|
2010-07-09 13:27:06 +02:00
|
|
|
acc_out = acc_in + a;
|
2010-07-09 10:35:54 +02:00
|
|
|
tel
|
|
|
|
|
|
|
|
node h(a:int^n) returns (m:int)
|
|
|
|
let
|
2010-07-09 13:27:06 +02:00
|
|
|
m = fold sum_acc <<n>>(a, 0);
|
2010-07-09 10:35:54 +02:00
|
|
|
tel
|
|
|
|
|
|
|
|
node sum_dup (a, acc_in:int) returns (o:int; acc_out:int)
|
|
|
|
let
|
2010-07-09 13:27:06 +02:00
|
|
|
acc_out = acc_in + a;
|
|
|
|
o = acc_out;
|
2010-07-09 10:35:54 +02:00
|
|
|
tel
|
|
|
|
|
|
|
|
node p(a:int^n) returns (o:int^n)
|
|
|
|
var acc:int;
|
|
|
|
let
|
2010-07-09 13:27:06 +02:00
|
|
|
(o, acc) = mapfold sum_dup <<n>>(a, 0);
|
2010-07-09 10:35:54 +02:00
|
|
|
tel
|
|
|
|
|
|
|
|
node k(a,b:int^n) returns (o:int^n)
|
|
|
|
let
|
|
|
|
o = map (+) <<n>>(a,b);
|
|
|
|
tel
|
|
|
|
|
|
|
|
node iter_reset(a:int^n; r:bool) returns (o:int^n)
|
|
|
|
let
|
|
|
|
reset
|
|
|
|
o = map plusone <<n>>(a);
|
2010-07-09 13:27:06 +02:00
|
|
|
every (r & r)
|
2010-07-09 10:35:54 +02:00
|
|
|
tel
|