parseSource :: FilePath -> IO (Program :~ SrcPos)
parseSource path = do
  src <- readFile path
  case parse pProgram path src of
    Left err -> fail $ show err
    Right x -> return x
parseSource :: FilePath -> IO (Program :~ SrcPos)
parseSource path = do
  src <- readFile path
  case parse pProgram path src of
    Left err -> fail $ show err
    Right x -> return x
parseSource path = do
  src <- readFile path
  case parse pProgram path src of
    Left err -> fail $ show err
    Right x -> return x