The Arrow operator
Continuing my journey in functional programming, I decided to try doing the 99 haskell problems to wean my way into haskell. I’ve found this to be a lot of fun since they give you the answers to each problem and, even though I have functional experience, the haskell way is sometimes very different from what I would have expected.
For example, I discovered Arrows via the following problem:
Run-length encoding of a list. Implement the so-called run-length encoding data compression method. Consecutive duplicates of elements are encoded as lists (N E) where N is the number of duplicates of the element E.
Example:
* (encode ‘(a a a a b c c a a d e e e e))
((4 A) (1 B) (2 C) (2 A) (1 D)(4 E))
Example in Haskell:encode “aaaabccaadeeee”
[(4,’a’),(1,’b’),(2,’c’),(2,’a’),(1,’d’),(4,’e’)]
My initial solution I did the way I’d probably write it in F#:
encode… Read more