Difference between revisions of "99 questions/Solutions/22"
< 99 questions | Solutions
Jump to navigation
Jump to search
(slightly modified the version with guards so that it will make backwards ranges too) |
|||
Line 14: | Line 14: | ||
or |
or |
||
<haskell> |
<haskell> |
||
− | range |
+ | range start stop |
− | | |
+ | | start > stop = reverse (range stop start) |
− | | |
+ | | start == stop = [stop] |
+ | | start < stop = start:range (start+1) stop |
||
</haskell> |
</haskell> |
||
Revision as of 05:22, 20 November 2010
Create a list containing all integers within a given range.
range x y = [x..y]
or
range = enumFromTo
or
range x y = take (y-x+1) $ iterate (+1) x
or
range start stop
| start > stop = reverse (range stop start)
| start == stop = [stop]
| start < stop = start:range (start+1) stop
Since there's already syntactic sugar for ranges, there's usually no reason to define a function like 'range' in Haskell. In fact, the syntactic sugar is implemented using the enumFromTo function, which is exactly what 'range' should be.