idea:
(assoc ^object x :b :c) => { ...x, b: 'b', c: 'c' }
so compile directly to inline spreadnot sure what the right tag name should obj: ^obj or ^object - any precedence here?
of course we will add type tracking too, at least for args + local references
I do encounter some object tags on Github in .cljs files
would (conj ^array x b c) => […x, b, c] ?
should that be { ...x, b: 'c' }?
yes, you're right, both!
Also potentially relevant: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
Calling an actual function like .assign() always feels cleaner to me than special syntax.
what Object.assign basically is is merge! which doesn't even exist in squint AFAIK