racket-algebraic
racket-algebraic copied to clipboard
design the developer API
The next release brings three major updates:
- a completed tutorial series
- tighter integration with
match
andsyntax-parse
- the initial developer API
Most of the work will be for number 3.
We need more information to make any sort of meaningful decision. What must it provide to be useful? Are there any examples that clearly demonstrates its utility? Does it have any unique or surprising qualities? What does any of this have to do with language-oriented programming?
Some initial thoughts.
At this stage, the existing syntax classes are low hanging fruit, but not necessarily that valuable to other developers. They're only much use for operating on algebraic functions or macros. The design just needs some polish: better names, more refined classes, miscellaneous tweaks.
A more substantial use case might require access to the information Algebraic Racket uses to generate definitions and hooks into the stages of a computation for checking types and whatnot. A simple coverage check (e.g. "you forgot a case for SomeProduct") would be useful. A more sophisticated exhaustivity check would be even better.
The syntax classes are also useful for macro writers that want to ensure an argument is a sum or product identifier.