squint

borkdude 2025-10-14T18:16:42.993479Z

idea:

(assoc ^object x :b :c) => { ...x, b: 'b', c: 'c' }
so compile directly to inline spread

borkdude 2025-10-14T18:17:15.224589Z

not sure what the right tag name should obj: ^obj or ^object - any precedence here?

borkdude 2025-10-14T18:20:15.466539Z

of course we will add type tracking too, at least for args + local references

borkdude 2025-10-14T18:23:15.952839Z

I do encounter some object tags on Github in .cljs files

2025-10-14T19:47:03.632399Z

would (conj ^array x b c) => […x, b, c] ?

👍 1
2025-10-14T19:52:25.345199Z

should that be { ...x, b: 'c' }?

👍 1
borkdude 2025-10-14T20:06:55.660299Z

yes, you're right, both!

Harold 2025-10-14T20:15:43.105529Z

Also potentially relevant: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

👍 1
Chris McCormick 2025-10-15T10:46:14.763879Z

Calling an actual function like .assign() always feels cleaner to me than special syntax.

borkdude 2025-10-15T10:56:46.328289Z

what Object.assign basically is is merge! which doesn't even exist in squint AFAIK

👍 1