firstTrue :: Monad m => [m (Maybe a)] -> m (Maybe a)
firstTrue []     = return Nothing
firstTrue :: Monad m => [m (Maybe a)] -> m (Maybe a)
firstTrue []     = return Nothing
firstTrue []     = return Nothing