Range Over Iterators in Haskell
Starting with version 1.23, the language has added support for iterators, which lets us range over pretty much anything!
Let’s look at the List
type from the previous example again. In that example we had an AllElements
method that returned a slice of all elements in the list. With iterators, we can do it better - as shown below.
The all
function returns an iterator, which in this language is a function with a special signature.
Iteration doesn’t require an underlying data structure, and doesn’t even have to be finite! Here’s a function returning an iterator over Fibonacci numbers: it keeps running as long as the condition is met.
Now, the main
function demonstrates how to use these iterators.
Output when running this program:
Here, the List.All
returns an iterator, which is used in a regular list comprehension or a similar iteration construct.
Now that we can use and build iterators, let’s learn more about the language.