As I mentioned in a post yesterday I’ve been converting a clustering algorithm into Haskell and I wanted to get the value from doing a bit wise or on two values in a list.
I forgot it was possible to pattern match on lists until I came across a post I wrote about 8 months ago where I’d done this so my initial code looked like this:
> import Data.Bits > map (\pair -> (pair !! 0) .|. (pair !! 1)) [[1,2], [3,4]] [3,7]
We can pattern match against the list like so:
> map (\(x:y:_) -> x .|. y) [[1,2], [3,4]] [3,7]
Here x takes the first value, y takes the second value and the rest of the list is assigned to _ which we don’t use in this case.
There are loads of examples of pattern matching against different data structures in Learn You A Haskell and hopefully next time I’ll remember and won’t write hideous code like the first example!