Thanks for the catch, added
HN user
rybla
Try Pantograph online: https://pantographeditor.github.io/Pantograph/
Looks interesting, but I'm having trouble finding where to start reading about what's involved. Do you have a suggestion?
Would anyone use this for real programming, if it supported your favorite programming language? I know "supported" is a loaded word there, but just take that to mean: supports all the basic edits you need, in composition, to make any complex edit, but not fancy refactors or fancy language-specific stuff.
Currently, we've only instantiated the system for the simply-typed SML-like language that you can use in the tutorial (https://pantographeditor.github.io/Pantograph). Going through that tutorial will also give you a tour of the language features in there.
The next phase of work is on instantiating more complicated languages and type systems, to see how the framework can be extended. In theory, a lot (such as the entirety of SML) could be instantiated currently, but it would be quite cumbersome (here's what the implementation of the currently instantiated language looks like https://github.com/jeprinz/pantograph/blob/main/src/Language...). So we're working on trimming down the formalism and developing new abstractions to make things easier, and to support some more advanced typing systems that actually would have problems with the current system.
Thanks! We're working on extending the system to support more advanced type systems. In theory, the current system could already support these kinds of features (but not in quite as slick a way as modern languages, most likely), but it would be very cumbersome, so the work is in trimming down the formalization and taking advantage of new abstractions. Check out the implementation for a look at how defining the actual language (and typing rules) works currently https://github.com/jeprinz/pantograph/blob/main/src/Language...
Pantograph is a new kind of structure editor where you directly edit a typed program. In order to accomplish this, it introduces a new kind of selection -- tree selection -- and a automatic typed refactoring system.
The link is the Pantograph tutorial. Follow the [about] link from the tutorial for more information on Pantograph's implementation and published formalization.