
#11301: Using GHC's parser and rendering the results is unreasonably difficult -------------------------------------+------------------------------------- Reporter: bitemyapp | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHC API | Version: 7.10.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bitemyapp):
Willing to improve it, but it's very unclear what a good interface is supposed to be.
This is good: http://hackage.haskell.org/package/haskell-src-exts-1.17.1/docs/Language- Haskell-Exts-Parser.html#v:parseExp The code you posted is going to send new people running for the hills (or Rust. or OCaml). There's no documentation, no way of knowing why one would want a frontend plugin or what problem it is solving for us. Googling the error message I got earlier was quite fruitless too. We don't really have to spend a lot of time discussing the API. Just catching up the GHC API's UX to the standard set by haskell-src-exts is sufficient for my purposes. Is there a reason a parser of Haskell source code needs to emit IO? If not, then there should be types like this available: {{{#!hs parseExp :: String -> ParseResult Exp }}} even if there are nittier-grittier underlying functions/facilities available. Further, why doesn't `ParseResult` in the GHC API have a Show instance? Trying to figure out something simple like, "parse this expression from a string and print the parse tree to stdout", with GHC's API is way-way-way harder than it should be and adding "more stuff" that the user has to know-about, care-about, etc. isn't good enough. It also looks like this frontend plugin thing doesn't work for REPL use. This is also not satisfactory. I'm assuming there are serious, difficult technical reasons the API provided by GHC doesn't include a simple "just parse the damn string" function with a Showable ParseResult. Could someone please explain those reasons? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11301#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler