Our plan for error messages was failWith :: String -> Q () Would that do? In this way you can format your own error message. So if you had f :: Int -> Q Exp f 0 = failWith "Postitive n required f n = [| \x -> x+n |] then the splice ....$(f 0)..... would elicit the error message Foo.hs:8: Error in splice $(f 0): Positive n required Is that what you want? Simon | -----Original Message----- | From: Alastair Reid [mailto:alastair@reid-consulting-uk.ltd.uk] | Sent: 29 October 2003 21:47 | To: Simon Peyton-Jones; template-haskell@haskell.org | Subject: Re: [Template-haskell] RE: Template Haskell... | | More things for the TH wish-list: | | I've been using TH to create language extensions. | Unfortunately, the error messages are horrible because: | | 1) They contain a header generated by TH. | This contains useful information like line numbers but it | talks about TH instead of talking about my extension. | | I want to be able to format the error message header myself using | information like filename and line number that TH provides to me. | | 2) They contain a body generated by TH. | If the code my language extension generates is wrong, | there's virtually no chance that any user (myself included) | will figure it out from seeing the machine-generated Haskell | code or being given the type error message. | Better just to say there is a problem and leave it at that. | | I want to be able to construct the error message body myself | using information like the expression being spliced before | evaluation, after evaluation and the error message produced. | | | A related issue is that I generate files corresponding to each TH module I | compile. If ghc is producing a file called foo/bar.o, I'd like the name of | the file to be foo/bar_stub.o. For this sort of application, I need access | to the name of the input and output filenames. | | Finally, can you drop the 'tick' from variable names produced using gensym? | If you'd used underscore, the variable name would be a legal C identifier | too. (Ok, so this is a bit specialized but it's very easy to do.) | | -- | Alastair Reid www.haskell-consulting.com |