ref: 8a3e8add6e0180565312d1079395ad39de4d9ce3
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
}
;;