I'm almost sure that some recursion points in SqlF are in wrong places. E.g. it's possible to create CASE and print it but the output isn't correct sql^2 and emits an error during parsing.
The idea is about at least introducing Expression type that handles identifiers, literals and operators.
Other thing is GROUP BY, keys should be NonEmpty List a or SELECT should take not Maybe (GroupBy a) but GroupBy a. There are few such things.
Make parser and gen coalgebraic
This one is heavily depending on making AST safe by construction.
The position information and printing issues are taken care of in the latest release. We now have lots of test cases which parse -> print -> parse and compare ASTs as equivalent.
Make AST safe by constructions.
I'm almost sure that some recursion points in SqlF are in wrong places. E.g. it's possible to create
CASE
and print it but the output isn't correct sql^2 and emits an error during parsing.The idea is about at least introducing
Expression
type that handles identifiers, literals and operators. Other thing isGROUP BY
, keys should beNonEmpty List a
orSELECT
should take notMaybe (GroupBy a)
butGroupBy a
. There are few such things.Make parser and gen coalgebraic
This one is heavily depending on making AST safe by construction.
Preserve position information during tokenizing
It's vanished right now.