3 ms·
Darn, I was going to do a show HN in a few days, but my side project too relevant here not to link to: https://docs.racket-lang.org/plisqin/index.html https://d
by default-kramer 6y ago
Darn, I was going to do a show HN in a few days, but my side project too relevant here not to link to: https://docs.racket-lang.org/plisqin/index.html https://docs.racket-lang.org/plisqin/index.html
As the warning says, it is NOT READY for any kind of use. But the SQL it generates is pretty close to what a human would write, so maybe it's fine to use.
There are two main things that Plisqin offers that I haven't seen elsewhere:
1. Joins are values. This is wonderful for composability. When you say (from x SomeTable ....), x is bound as an "instance of SomeTable". Joins are also instances in the same way.
2. Traditional SQL-style aggregates are supported, but "grouped join aggregation" is a new concept in Plisqin. Described here: https://docs.racket-lang.org/plisqin/Aggregates.html https://docs.racket-lang.org/plisqin/Aggregates.html
Besides those two, there is also a different approach to comparisons which eliminates 3VL: https://docs.racket-lang.org/plisqin/Nullability.html https://docs.racket-lang.org/plisqin/Nullability.html. This is only in the "strict" variant of Plisqin; the "unsafe" variant gives you 3VL back if you like it.
I plan to finish up the documentation, and enhance the "Plisqin as a Research Language" section with more analysis of what works well and what gaps in the language I'd still like to patch.