4 ms·
I believe they're similar to uninterned symbols in Lisp, i.e. what you get in Common Lisp from make-symbol (or gensym). The main intended use-case seems to be t
by mjn 12y ago
I believe they're similar to uninterned symbols in Lisp, i.e. what you get in Common Lisp from make-symbol (or gensym). The main intended use-case seems to be to get "private" property names, by conjuring up a fresh name-like thing is not equal to any other name-like thing, and not findable/enumerable in the usual way either. You can then monkey-patch that into a class or do whatever other nefarious thing you were planning.
I agree it's a somewhat confusing name, since interned symbols are the more familiar kind of symbol in other languages, especially in the modern era (older Lisps made more extensive use of uninterned symbols).
- angersock 12y agoSo, that sort of makes sense if you were to use them as keys in the new Map and Set objects...but I again, I can't help but notice that I haven't felt their absence yet. Thanks for the reference about CL make-symbol. Is there a practical use for this we actually would spot in the wild, or do I need to go up on the mountain with a copy of The Art of the Metaobject Protocol?
- fpgeek 12y agoThe standard Lisp use for generated symbols is to provide a way to reliably avoid name clashes during macro expansion. I'm not sure if that qualifies as a practical use in the out in the wild or just a practical way to fix pain (e.g. CPP nonsense) that you can see out in the wild.
- rnbwd 12y agoI had no idea what a Symbol even was until I stumbled upon alt - https://github.com/goatslacker/alt https://github.com/goatslacker/alt It's a small and simple code base, and much easier way to grok the concept than reading a book.
- angersock 12y agoGood link. You can see the usage in the first few lines here: https://github.com/goatslacker/alt/blob/master/src/alt.js https://github.com/goatslacker/alt/blob/master/src/alt.js They seem to be being used mostly as immutable constants for readability--which kind of fits with normal use, right? I'm just trying to see if there's anything else here I'm missing.