Skip to content

Commit 4eb9f65

Browse files
committed
Allow arbitrary start and end for range
1 parent d151411 commit 4eb9f65

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/Data/Array.purs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,19 @@ foreign import filter
213213
\ };\
214214
\}" :: forall a. (a -> Boolean) -> [a] -> [a]
215215

216-
range :: Number -> Number -> [Number]
217-
range lo hi | lo > hi = []
218-
range lo hi = lo : range (lo + 1) hi
216+
foreign import range
217+
"function range (start) {\
218+
\ return function (end) {\
219+
\ var i = ~~start, e = ~~end;\
220+
\ var step = i > e ? -1 : 1;\
221+
\ var result = [i], n = 1;\
222+
\ while (i !== e) {\
223+
\ i += step;\
224+
\ result[n++] = i;\
225+
\ }\
226+
\ return result;\
227+
\ };\
228+
\}" :: Number -> Number -> [Number]
219229

220230
foreign import zipWith
221231
"function zipWith (f) {\

0 commit comments

Comments
 (0)