init commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
(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])
|
||||
Reference in New Issue
Block a user