
Hi Nathan, On Wed, Oct 31, 2012 at 03:02:45PM +0100, Nathan Hüsken wrote:
collInfo' :: Maybe Rect -> Maybe Rect -> Maybe CollInfo collInfo' mr1 mr2 = r1 <- mr1 r2 <- mr2 collInfo r1 r2
that doesn't seem to be that nice, because you could call it with any two Rects and get a CollInfo, even if they don't collide: collInfo' (Just $ Rect 0 0 1 1) (Just $ Rect 5 5 1 1) Having Maybes as arguments just doesn't feel that right. You could separate the collision test: colliding :: Rect -> Rect -> Bool colliding (Rect x1 y1 w1 h1) (Rect x2 y2 w2 h2) = not $ x1 + w1 < x2 || x1 > x2 + w2 || y1 + h1 < y2 || y1 > y2 + h2 collInfo :: Rect -> Rect -> Maybe (Rect, Rect) collInfo r1 r2 | colliding r1 r2 = Just (r1, r2) | otherwise = Nothing Greetings, Daniel