parseCheck :: Text a => String -> Maybe a
parseCheck str =
  case [ x | (x,ys) <- readP_to_S parse str, all isSpace ys ] of
    [x] -> Just x
    _   -> Nothing
parseCheck :: Text a => String -> Maybe a
parseCheck str =
  case [ x | (x,ys) <- readP_to_S parse str, all isSpace ys ] of
    [x] -> Just x
    _   -> Nothing
parseCheck str =
  case [ x | (x,ys) <- readP_to_S parse str, all isSpace ys ] of
    [x] -> Just x
    _   -> Nothing