4 ms·
This wishlist sounds like rose.ai "Wishlist Data model: A small set of primitives eg writing an inspector gui eg searching for references to some id But sti
by thedudeabides5 5y ago
This wishlist sounds like rose.ai
"Wishlist
Data model:
A small set of primitives
eg writing an inspector gui
eg searching for references to some id
But still able to represent types and invariants
Able to reify changes as data
eg for undo log
eg for real-time collaboration
All data has some name/path/location by which it can be referred to
eg no hidden state in closures
eg no hidden closures in the event loop queues
Avoid depending on pointers for identity
Data notation:
A textual representation which is easy to read/write
Used consistently everywhere - one standard way of picturing data
Self-describing - doesn't require out-of-band type/schema
Uses layering to add capabilities while mimicking familiar notation
Uses shorthands and exploits context to reduce redundant information
eg clojure namespace aliases
eg unison names
Code:
The notation for code is a superset of the notation for data
eg can print data and copy-paste into code / repl
Can choose the mapping between tags in data notation and types in code
Code can be represented as data with low mental distance
The codebase is also data - can trivially analyze whole thing including dependencies without having to execute side effects
Maybe, if possible, reify the execution of code as data
Crucially, the data model and the data notation need to be co-designed, because it's so easy to make choices in the data model that prevent creating a good data notation later."