ref: 6c0e6856de4a72b7d6ab99a184d213b18a3dea14
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
}
;;