Hacker News new | past | comments | ask | show | jobs | submit login

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.

You 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.

Something that could work with git is to use a map.


    (a1 a2 (b1 b2))

    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.

That'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.

That would work as long as the author isn't seriously abusing reader macros in the serialized format :).

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact