1 point by evanrmurphy 4379 days ago | link | parent There's a thread from over a year ago about table literal syntax for Arc that has helped me with some of my thinking here [1]. These are some examples of how object literal ssyntax might work in the JavaScript DSL, especially in the context of quotation:`````` (= a 'foo) a = 'foo'; {a a} {a: a} // => {a: 'foo'} {a 'a} {a: 'a'} {'a 'a} {'a': 'a'} '{a a} '{a: a}' {a (- 5 4)} {a: 5 - 4} {a '(- 5 4)} {a: '5 - 4'} '{a (- 5 4)} '{a: 5 - 4}' '{a '(- 5 4)} '{a: \'5 - 4\'}' `````` And here are some array examples:`````` [1 2 3] [1, 2, 3] (= a 'foo) a = 'foo'; [a 2 3] [a, 2, 3] // => ['foo', 2, 3] ['a 2 3] ['a', 2, 3] '[a 2 3] '[a, 2, 3]' '['a 2 3] '[\'a\', 2, 3]' `````` I guess you could support quasi-quotation like this (though I don't know if you'd want to):`````` (= a 'foo) a = 'foo'; `[,a 2 3] '[' + a + ', 2, 3]' `````` But it will definitely work in the context of macros, where the quasi-quotation is transformed away before it hits JavaScript compilation:`````` (mac array (x y z) `[,x ,y ,z]) (array 1 2 3) ; expands to... [1 2 3] [1, 2, 3] `````` Here's a much more flexible array macro:`````` (mac array elts `[,@elts]) (array 'foo 'bar 'baz 'quux) ; expands to... ['foo 'bar ['foo', 'bar', 'baz 'quux] 'baz', 'quux'] `````` ---[1] "hmm, how about '#table(a 1 b 2)' for a literal table syntax?": http://arclanguage.org/item?id=10678