diff --git a/lib/moi/util/list.elv b/lib/moi/util/list.elv index cc2e1af..08a3fc7 100644 --- a/lib/moi/util/list.elv +++ b/lib/moi/util/list.elv @@ -2,7 +2,7 @@ use builtin use str fn -p [@argv]{ - local:c = (count $argv) + var c = (count $argv) if (== $c 0) { put [ (all) ] } elif (== $c 1) { @@ -16,7 +16,7 @@ fn -r [step begin end]{ if (> $step 0) { builtin:range &step=$step $begin (+ $end 1) } else { - local:d = (+ $begin $end) + var d = (+ $begin $end) builtin:range &step=(* $step -1) $end (+ $begin 1) | each [e]{ - $d $e } } } @@ -33,11 +33,11 @@ fn range [&step=1 b @r]{ if (== $step 0) { fail 'bad value: step must be positive, but is 0' } - local:c = (count $r) + var c = (count $r) if (> $c 1) { fail 'usage: list:range &step=1 begin? end' } - local:e = 0 + var e = 0 if (== $c 0) { if (> $step 0) { b e = $e $b @@ -52,8 +52,8 @@ fn indexes [&from=$false &step=1 @argv]{ if (== $step 0) { fail 'bad value: step must be positive, but is 0' } - local:l = (-p $@argv) - local:c = (count $l) + var l = (-p $@argv) + var c = (count $l) if (not $from) { range &step=$step (- $c 1) } else { @@ -75,7 +75,7 @@ fn indexes [&from=$false &step=1 @argv]{ } fn -for [&from=$false &step=1 @argv]{ - local:l = (-p $@argv) + var l = (-p $@argv) indexes &from=$from &step=$step $l | each [i]{ put [ $i $l[$i] ] } } @@ -84,7 +84,7 @@ fn loop [&from=$false &step=1 &end=$false cb @argv]{ -for &from=$from &step=$step $@argv | each [e]{ $cb $@e } } else { -for &from=$from &step=$step $@argv | each [e]{ - local:i local:v = $@e + var i v = $@e if ($end $i $v) { break } @@ -110,13 +110,13 @@ fn filter [cb @argv]{ } fn filter-not [cb @argv]{ filter [v]{ not ($cb $v) } $@argv } fn first [&from=$false &reverse=$false cb @argv]{ - local:f = [v]{ + var f = [v]{ if ($cb $v) { put $v break } } - local:l = (-p $@argv) + var l = (-p $@argv) if (not $from) { if $reverse { reach $f $l @@ -124,12 +124,12 @@ fn first [&from=$false &reverse=$false cb @argv]{ each $f $l } } else { - local:c = (count $l) + var c = (count $l) if (< $from 0) { from = (+ $c $from) } if $reverse { - local:e = (+ $from 1) + var e = (+ $from 1) if (> $e $c) { e = $c } elif (< $e 0) { @@ -137,7 +137,7 @@ fn first [&from=$false &reverse=$false cb @argv]{ } reach $f $l[..$e] } else { - local:b = $from + var b = $from if (> $b $c) { b = $c } elif (< $b 0) { @@ -157,8 +157,8 @@ fn filter-index [cb @argv]{ } fn filter-index-not [cb @argv]{ filter-index [v]{ not ($cb $v) } $@argv } fn first-index [&from=$false &reverse=$false cb @argv]{ - local:idx = -1 - local:step = 1 + var idx = -1 + var step = 1 if $reverse { step = -1 } @@ -180,7 +180,7 @@ fn search [cb @argv]{ } fn search-not [cb @argv]{ search [i v]{ not ($cb $i $v) } $@argv } fn search-first [&from=$false &reverse=$false cb @argv]{ - local:step = 1 + var step = 1 if $reverse { step = -1 } @@ -201,8 +201,8 @@ fn search-index [cb @argv]{ } fn search-index-not [cb @argv]{ search-index [i v]{ not ($cb $i $v) } $@argv } fn search-first-index [&from=$false &reverse=$false cb @argv]{ - local:idx = -1 - local:step = 1 + var idx = -1 + var step = 1 if $reverse { step = -1 } @@ -216,7 +216,7 @@ fn search-first-index [&from=$false &reverse=$false cb @argv]{ } fn contains [cb @argv]{ - local:e = $false + var e = $false each [v]{ if ($cb $v) { e = $true @@ -228,7 +228,7 @@ fn contains [cb @argv]{ fn contains-not [cb @argv]{ contains [v]{ not ($cb $v) } $@argv } fn exists [cb @argv]{ - local:e = $false + var e = $false loop [i v]{ if ($cb $i $v) { e = $true @@ -248,7 +248,7 @@ fn reduce [v cb @argv]{ } fn remove-duplicate [@argv]{ - local:done = [&] + var done = [&] each [v]{ put [&v=$v &e=(has-key $done $v)] done[$v] = $nil @@ -261,17 +261,17 @@ fn remove-duplicate [@argv]{ } } fn premove-duplicate [@argv]{ - local:done= [&] + var done = [&] peach [v]{ - local:v = $v + var v = $v done[$v] = $nil } (-p $@argv) keys $done } fn swap [i j @argv]{ - local:l = (-p $@argv) - local:c = (count $l) + var l = (-p $@argv) + var c = (count $l) i j = (-i $i $c) (-i $j $c) if (or (== $i $c) (== $j $c)) { fail 'Index out of range' @@ -291,7 +291,7 @@ fn swap [i j @argv]{ } fn less [cb]{ - local:l = [a b]{ < ($cb $a $b) 0 } + var l = [a b]{ < ($cb $a $b) 0 } put $l } fn sort [cb @argv]{ order &less-than=(less $cb) (-p $@argv) }