# 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