Commit 1b72582ee990eef61fe5484ed3cffa69e8fca2f1
1 parent
33d50df7
[+] add map_compute function which allow map with a dynamic parameter.
Showing
1 changed file
with
23 additions
and
2 deletions
Show diff stats
anubis_dev/library/tools/function.anubis
... | ... | @@ -254,7 +254,28 @@ public define List($C) |
254 | 254 | [x . map_parameter(f, p1, t)] |
255 | 255 | } |
256 | 256 | . |
257 | - | |
257 | + | |
258 | +public define $P | |
259 | +/** 'map' with a dynamic parameter. A new parameter is return as a result and | |
260 | + * pass through as parameter with next call iteration and finally returned as | |
261 | + * result of the map_parameter. This allows to make computation on the parameter | |
262 | + * like a sum | |
263 | + */ | |
264 | + map_compute | |
265 | + ( | |
266 | + ($P,$B) -> $P f, // | |
267 | + $P p, //initial parameter | |
268 | + List($B) l // | |
269 | + ) = | |
270 | + if l is | |
271 | + { | |
272 | + [ ] then p, | |
273 | + [h . t] then | |
274 | + with p1 = f(p, h), | |
275 | + map_compute(f, p1, t) | |
276 | + } | |
277 | +. | |
278 | + | |
258 | 279 | public define List($C) |
259 | 280 | /** 'map' with a dynamic parameter. A new parameter is return with the result and |
260 | 281 | * pass through as parameter with next call iteration |
... | ... | @@ -669,4 +690,4 @@ public define macro $T |
669 | 690 | (($T t) |-f-> if test(t) then f(step(t)) else t)(init). // terminal call ! |
670 | 691 | |
671 | 692 | |
672 | - | |
673 | 693 | \ No newline at end of file |
694 | + | ... | ... |