4 ms·
Hi there. Not at this level. My idea was more like building it as a tower of intermediate languages or representations. Eg. You start with a core and pure lan
by rq1 5y ago
Hi there.
Not at this level.
My idea was more like building it as a tower of intermediate languages or representations.
Eg. You start with a core and pure language of primitives (for drawing and constraint solving), that should be easy to optimise and build sugared versions/higher level language that will translate/reduce into that core language.
It means at the end that we could have a higher level, declarative language/DSL that will generate the right underlying core representation (and you’ll compile that core language to webassembly or llvm ir for instance).
That’s how the latest advanced FP programming languages are built. Eg. you can check Idris2[1] or Formality[2] (small enough to understand the construction).
The analogy with llvm was to emphasise that you’d have a backend where your optimisation efforts should go, and your frontend(s) where your “ux” and ergonomics efforts should go.
Or put another way: build a “low level virtual machine” tailored for your specific topic, then the set of higher level languages that compile to its ir/bytecode.
[1]: https://idris2.readthedocs.io/en/latest/implementation/overview.html https://idris2.readthedocs.io/en/latest/implementation/overv...
[2]: https://github.com/Kindelia/Kind https://github.com/Kindelia/Kind https://github.com/VictorTaelin/Elementary-Affine-Type-Theory-legacy https://github.com/VictorTaelin/Elementary-Affine-Type-Theor...
- hannobraun 5y agoInteresting, thanks for elaborating! I have had similar thoughts: Having a low-level representation that only makes sure that a geometric object you reference actually exists (and does other low-level validations), then have a wrapper around that, that provides higher-level operations and makes sure your model is also manifold. This isn't thought out yet, just some stuff I've pondered. Thanks for providing more input to my thought process!