Skip to content
Snippets Groups Projects
Commit 4938b090 authored by Fredrik Hübinette (Hubbe)'s avatar Fredrik Hübinette (Hubbe)
Browse files

should now handle multisets and mappings too...

Rev: lib/modules/Array.pmod:1.18
parent 66c01cb5
No related branches found
No related tags found
No related merge requests found
...@@ -15,6 +15,9 @@ mixed map(mixed arr, mixed fun, mixed ... args) ...@@ -15,6 +15,9 @@ mixed map(mixed arr, mixed fun, mixed ... args)
if(mappingp(arr)) if(mappingp(arr))
return mkmapping(indices(arr),map(values(arr),fun,@args)); return mkmapping(indices(arr),map(values(arr),fun,@args));
if(multisetp(arr))
return mkmultiset(map(indices(arr,fun,@args)));
switch(sprintf("%t",fun)) switch(sprintf("%t",fun))
{ {
case "int": case "int":
...@@ -50,7 +53,13 @@ mixed filter(mixed arr, mixed fun, mixed ... args) ...@@ -50,7 +53,13 @@ mixed filter(mixed arr, mixed fun, mixed ... args)
for(e=0;e<sizeof(ret);e++) if(ret[e]) r[i[e]]=v[e]; for(e=0;e<sizeof(ret);e++) if(ret[e]) r[i[e]]=v[e];
return r; return r;
}else{ }
if(multisetp(arr))
{
return mkmultiset(filter(indices(arr,fun,@args)));
}
else
{
int d; int d;
ret=map(arr,fun,@args); ret=map(arr,fun,@args);
for(e=0;e<sizeof(arr);e++) if(ret[e]) ret[d++]=arr[e]; for(e=0;e<sizeof(arr);e++) if(ret[e]) ret[d++]=arr[e];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment