# New Ticket Created by Vasily Chekalkin
# Please include the string: [perl #54742]
# in the subject line of all future correspondence about this issue.
# URL: http://rt.perl.org/rt3/Ticket/Display.html?id=54742
Hello.
Reworked implementation of 'map'
--
Bacek
Index: src/classes/List.pir
===
--- src/classes/List.pir (revision 27774)
+++ src/classes/List.pir (working copy)
@@ -709,6 +709,31 @@
.return 'list'(arr)
.end
+=item map()
+
+Map.
+
+=cut
+
+.sub 'map' :method
+.param pmc expression
+.local pmc res, elem, block, mapres, iter
+
+res = new 'List'
+iter = new 'Iterator', self
+ loop:
+unless iter goto done
+elem = shift iter
+newclosure block, expression
+mapres = block(elem)
+
+res.'push'(mapres)
+goto loop
+
+ done:
+.return(res)
+.end
+
=back
=head1 Functions
@@ -768,6 +793,20 @@
.end
+=item Cmap
+
+Operator form of Cmap. Delegates map to passed list.
+
+=cut
+
+.sub 'map' :multi(_,List)
+.param pmc expression
+.param pmc list
+
+.return list.'map'(expression)
+.end
+
+
=item Cinfix:,(...)
Operator form for building a list from its arguments.
@@ -1118,8 +1157,9 @@
.return list.'uniq'()
.end
-## TODO: join map reduce sort zip
+## TODO: zip
+
=back
=cut