ref: d87c0959d85b40fcf60b9c6dd0a2f2111f888b55
dir: /lib/iter/reverse.myr/
use std
pkg iter =
type reverseiter(@a) = struct
sl : @a[:]
idx : std.size
;;
impl iterable reverseiter(@a) -> @a
generic byreverse : (sl : @a[:] -> reverseiter(@a))
;;
generic byreverse = {sl
-> [.sl = sl, .idx = sl.len]
}
impl iterable reverseiter(@a) -> @a =
__iternext__ = {itp, valp
if itp.idx > 0
valp# = itp.sl[itp.idx - 1]
itp.idx--
-> true
else
-> false
;;
}
__iterfin__ = {itp, valp
}
;;