public static ISeq create(final long start, long end, long step) { if(step > 0) { if(end <= start) return PersistentList.EMPTY; return new LongRange(start, end, step, positiveStep(end)); } else if(step < 0) { if(end >= start) return PersistentList.EMPTY; return new LongRange(start, end, step, negativeStep(end)); } else { if(end == start) return PersistentList.EMPTY; return Repeat.create(start); } }
public static ISeq create(final long start, long end, long step) { if(step > 0) { if(end <= start) return PersistentList.EMPTY; return new LongRange(start, end, step, positiveStep(end)); } else if(step < 0) { if(end >= start) return PersistentList.EMPTY; return new LongRange(start, end, step, negativeStep(end)); } else { if(end == start) return PersistentList.EMPTY; return Repeat.create(start); } }
public static ISeq create(final Object start, Object end, Object step) { if((Numbers.isPos(step) && Numbers.gt(start, end)) || (Numbers.isNeg(step) && Numbers.gt(end, start)) || Numbers.equiv(start, end)) return PersistentList.EMPTY; if(Numbers.isZero(step)) return Repeat.create(start); return new Range(start, end, step, Numbers.isPos(step)?positiveStep(end):negativeStep(end)); }