First haskell implementation

This can be optimized. It's currently visiting all cells when it can
look ahead and skip empty cells on the same row.