cljs-dev

ClojureScript compiler & std lib dev, https://clojurescript.org/community/dev
lilactown 2019-08-18T00:01:50.163300Z

is mikerods question related to romans?

lilactown 2019-08-18T00:02:26.164300Z

I think we don’t implement IMeta for arbitrary objects because it would require either mutating the object or doing some sort of copy

lilactown 2019-08-18T00:03:18.165300Z

primitives probably couldn’t hold meta without some wrapper

mfikes 2019-08-18T00:05:04.167200Z

Right. I had suggested that a revision to macroexpansion logic couldn't arbitrarily put meta on the result of macroexpansion (in other words convey, induce, whatever term). Mike is right in that you could force the issue. But you definitely wouldn't want to. Nor does it seem either necessary, and the whole idea seems at odds with Clojure's behavior.

👍 1
mfikes 2019-08-18T00:06:11.168100Z

In some sense, one odd aspect of the hinting failure is that it only happens because we happen to have a macro defined for aget.

2019-08-18T00:33:37.173400Z

It seems like currently most optimisations that are built with type inference are operating with primitive types e.g. string boolean number, would it make sense to include core data types as well?

2019-08-18T00:33:52.173900Z

To be fair there's also 'array and 'seq

mfikes 2019-08-18T00:42:29.174400Z

https://clojure.atlassian.net/browse/CLJS-3132 is an example of optimizations surrounding cljs.core/Keyword and cljs.core/Symbol

2019-08-18T01:27:08.178100Z

I was thinking about checked if, right now compiler is looking for constant values, boolean and seq

2019-08-18T01:27:23.178500Z

What is 'clj tag for btw?

2019-08-18T13:38:52.180100Z

Thanks for explaining. And yeah that all makes sense.