4 ms·
Programs are stored as S-expressions, are not particularly easy to read or safe to modify. What you've built sounds very interesting, but this part is a proble
by kyllo 10y ago
Programs are stored as S-expressions, are not particularly easy to read or safe to modify.
What you've built sounds very interesting, but this part is a problem you may need to solve before programmers will embrace it. If I can't use git with it, I can't develop any non-trivial software with it.
- vmorgulis 10y agoSomething that could work with git is to use a map. Transform: (a1 a2 (b1 b2)) To: ------------- parent child ------------- root list1 list1 a1 list1 a2 list1 list2 list2 b1 list2 b2 It should work with diff too if the ids are preserved.
- kyllo 10y agoThat's exactly how you store a tree in a relational database. Every row has a parent_id column. This language isn't just a tree though, it's a graph, so you would need a row per edge instead of a row per node. It would work with git as long as it's kept in sorted order and doesn't grow extremely large, but it isn't nice to view or edit directly; you would want a graph query language to interact with it.
- TeMPOraL 10y agoThat would work as long as the author isn't seriously abusing reader macros in the serialized format :).
- mpbm 10y agoYou need version control and diffs, not git. In a visual system I think it makes more sense to use visual diffs, or algorithm generated summaries. Technically, what git shows you is already a visual diff ;) and they like to draw the diff tree instead of describing it textually because it makes a lot more sense.