@Override default Seq<T> drop(int n) { if (n >= length()) { return Stream.empty(); } else { return values().drop(n); } }
@SuppressWarnings("unchecked") static <T, C extends Seq<T>> C rotateLeft(C source, int n) { if (source.isEmpty() || n == 0) { return source; } else if (n < 0) { return rotateRight(source, -n); } else { int len = source.length(); int m = n % len; if (m == 0) { return source; } else { return (C) source.drop(m).appendAll(source.take(m)); } } }
@Override default Seq<T> drop(int n) { if (n >= length()) { return Stream.empty(); } else { return values().drop(n); } }
@SuppressWarnings("unchecked") static <T, C extends Seq<T>> C rotateLeft(C source, int n) { if (source.isEmpty() || n == 0) { return source; } else if (n < 0) { return rotateRight(source, -n); } else { int len = source.length(); int m = n % len; if (m == 0) { return source; } else { return (C) source.drop(m).appendAll(source.take(m)); } } }