Wenn ihr eine Sprache designen würdet, deren Sourcecode gültiges JSON ist, wie würde die aussehen?
Hier mein Kandidat, mit deutlichem Haskell/ML Einfluss:
{
"module" : "Calc",
"import" : ["Math.sqrt"],
"export" : ["calc"],
"calc" : [ { "value" : "Obj" },
{
"let" : [
{ "p1" : ["value", ["points", "p1"] ]},
{ "p2" : ["value", ["points", "p2"] ]}
],
"in" : { "distance" : [ "p1", "p2"] }
}
],
"distance" : [ { "p1" : "Point" }, { "p2" : "Point" },
{
"let" : [
{"x1" : ["p1", ["x"]]},
{"x2" : ["p2", ["x"]]},
{"y1" : ["p1", ["y"]]},
{"y2" : ["p2", ["y"]]}
],
"in" : { "sqrt" :
{"+" : [
{"sqr": {"-" : ["x1", "x2"]}},
{"sqr": {"-" : ["y1", "y2"]}}
]}
}
}
],
"sqr" : [{ "value" : "Dbl" },
{ "*" : ["value", "value"] }
],
"Point" : {
"x" : "Dbl",
"y" : "Dbl"
}
}
Ich habe schnell gemerkt, dass es recht schwierig ist, Klammern u.s.w. zu vermeiden, ohne uneindeutig zu werden. Wobei mir das Beispiel schon recht gut gefällt.