|
( ( fold
|
|
= f xs init first rest
|
|
. !arg:(?f.?xs.?init)
|
|
& ( !xs:&!init
|
|
| !xs:%?first ?rest
|
|
& !f$(!first.fold$(!f.!rest.!init))
|
|
)
|
|
)
|
|
& out
|
|
$ ( fold
|
|
$ ( (=a b.!arg:(?a.?b)&!a+!b)
|
|
. 1 2 3 4 5
|
|
. 0
|
|
)
|
|
)
|
|
& (product=a b.!arg:(?a.?b)&!a*!b)
|
|
& out$(fold$(product.1 2 3 4 5.1))
|
|
);
|