A raycasting engine written in Haskell