findMatch mp (x:xs)
    | matchProp mp x = Just (x, xs)
    | otherwise      = findMatch mp xs & _Just._2 %~ (x:)
findMatch mp (x:xs)
    | matchProp mp x = Just (x, xs)
    | otherwise      = findMatch mp xs & _Just._2 %~ (x:)
findMatch mp (x:xs)
    | matchProp mp x = Just (x, xs)
    | otherwise      = findMatch mp xs & _Just._2 %~ (x:)