
Tim Newsham wrote:
I'm goofing with TH and I have my program mostly done:
If I have the "$(deriveBinary ''MyData)" line commented out it prints out what looks to me like correct code. I can even paste it into a program and it compiles.
Pasting the text output can miss errors in the underlying AST, which seems to be what's happening here. If you examine the AST that's produced by: putStrLn $(deriveBinary ''MyData >>= lift . show) ...you can search for occurrences of "x_" and see how they're being constructed. The erroneous ones in this case are of the form: (ConE x_NNNN) ...which explains the error message, "Illegal data constructor name", because this is trying to reference a variable as though it were a constructor. I assume the ConE should really be a VarE. The fix to the program is obvious but I'll leave that as an exercise just in case it's not. :) Anton