cycle package:non-empty

generic variants: cycle or better Semigroup.cycle