[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: repeat function
i came up with
fn repeat n cmd {
let (counter =) {
while {!~ $#counter $n} {
$cmd
counter = $counter 1
}
}
}
it has two disadvantages:
(a) the counter list grows proportional to n, which is inefficient
(b) an ill-formed number causes infinite recursion
(b) is more serious, so a slight improvement is
fn repeat n cmd {
let (counter =) {
result $counter($n)
while {!~ $#counter $n} {
$cmd
counter = $counter 1
}
}
}
(note the ``useless'' result statement inside the let.) this version
will raise an exception if the number is not legal as a subscript.
that should catch most problems.
as for (a), nothing short of adding arithmetic to the shell would
really address that. people have proposed that for es, but Byron & i
are very hesitant. we know some shells have arithmetic or at least
an expr builtin, but some shells have !-history, too.
paul