# New Ticket Created by dakkar # Please include the string: [perl #68294] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=68294 >
second patch from Lisbon: kv in the setting
>From db44fb60bde4009d148ac699c0a9b8383ac2206d Mon Sep 17 00:00:00 2001
From: dakkar <dak...@sardina.(none)>
Date: Thu, 6 Aug 2009 16:18:15 +0200
Subject: [PATCH] moved kv to setting
---
src/builtins/any-list.pir | 40 ----------------------------------------
src/setting/Any-list.pm | 15 +++++++++++++++
2 files changed, 15 insertions(+), 40 deletions(-)
diff --git a/src/builtins/any-list.pir b/src/builtins/any-list.pir
index e963092..cd78d87 100644
--- a/src/builtins/any-list.pir
+++ b/src/builtins/any-list.pir
@@ -94,46 +94,6 @@ Return a List with the keys of the invocant.
signature."!add_implicit_self"($P0)
.end
-
-=item kv
-
-=cut
-
-.namespace []
-.sub 'kv' :multi() :subid('_kv')
- .param pmc values :slurpy
- values.'!flatten'()
- .tailcall values.'kv'()
-.end
-.sub '' :init :load
- .local pmc block, signature
- .const 'Sub' $P0 = "_kv"
- block = $P0
- signature = new ["Signature"]
- setprop block, "$!signature", signature
- signature.'!add_param'('@values', 1 :named('slurpy'))
- '!TOPERL6MULTISUB'(block)
-.end
-
-.namespace ['Any']
-.sub 'kv' :method
- .local pmc result, it
- result = new ['List']
- it = self.'iterator'()
- .local int i
- i = 0
- loop:
- unless it goto done
- $P0 = shift it
- push result, i
- push result, $P0
- inc i
- goto loop
- done:
- .return (result)
-.end
-
-
=item pick($num, :$repl)
=cut
diff --git a/src/setting/Any-list.pm b/src/setting/Any-list.pm
index 32d1ecf..9a9431a 100644
--- a/src/setting/Any-list.pm
+++ b/src/setting/Any-list.pm
@@ -85,6 +85,17 @@ class Any is also {
}
}
+ our List multi method kv() {
+ my $i=0;
+ gather {
+ for @.list -> $value {
+ take 0+$i;
+ take $value;
+ ++$i
+ }
+ }
+ }
+
multi method reduce(Code $expression is rw) {
my Int $arity = $expression.count;
fail('Cannot reduce() using a unary or nullary function.')
@@ -133,6 +144,10 @@ our Str multi join(Str $separator = '', *...@values) {
@values.join($separator)
}
+our List multi sub kv(*...@values) is export {
+ @values.kv();
+}
+
our List multi map(Code $expr, *...@values) {
@values.map($expr)
}
--
1.5.6.3
signature.asc
Description: PGP signature
