(ns Range "Elixir Range module — integer ranges. In CljElixir: Ranges use first..last or first..last//step syntax. (Range/new 1 10) ;=> 1..10") (defn new "Creates a new range. (Range/new 1 10) ;=> 1..10 (Range/new 1 10 2) ;=> 1..10//2 (step of 2)" ([first last]) ([first last step])) (defn size "Returns the number of elements in the range. (Range/size (Range/new 1 10)) ;=> 10" [range]) (defn disjoint? "Returns true if two ranges don't overlap. (Range/disjoint? (Range/new 1 5) (Range/new 6 10)) ;=> true" [range1 range2]) (defn shift "Shifts a range by `steps`. (Range/shift (Range/new 1 5) 2) ;=> 3..7" [range steps]) (defn split "Splits a range at position `split`. (Range/split (Range/new 1 5) 3) ;=> {1..3 4..5}" [range split]) (defn to-list "Converts range to a list. (Range/to-list (Range/new 1 5)) ;=> [1 2 3 4 5]" [range])