Re: When to use metadata
To be clear, I actually agree with Stuart. I would really like to dig into this topic and hear everyones thoughts on this; it's such a large piece of Clojure's private and public API. On Friday, January 30, 2015 at 1:53:37 PM UTC-5, adrian...@mail.yu.edu wrote: > > Metadata fields proliferate throughout the standard Clojure value and > reference types. It seems odd that one would suggest that this seemingly > well supported feature should not be taken advantage of except in very > narrow circumstances. What is the rationale for such robust support for > runtime metadata if their usage should be restricted primarily to > compile-time or metaprogramming tasks? If that was the primary purpose, > certainly a Common Lisp proclaim/declaim/declare-esque expression would be > preferable since then the compiler and macros can take advantage of this > information when reading forms without having to extract data out of > symbols on an ad-hoc basis. It makes me think maybe we're missing the point > here. Rich Hickey clearly carefully designed Clojure to support varied uses > of runtime metadata on Clojure objects. > > On Friday, January 30, 2015 at 1:28:04 PM UTC-5, Stuart Sierra wrote: >> >> Almost never. >> >> Seriously, anything important enough to be included in your program's >> input or output is almost certainly important enough to be *data*, not >> metadata. And the non-equality-checking semantics of metadata are confusing. >> >> About the only place I've found metadata to be worthwhile is >> meta-programming namespaces and Vars, e.g. what clojure.test does. >> >> My personal rule of thumb is: if you strip all the metadata from your >> program it should still work, thought maybe less efficiently. >> >> –S >> >> >> On Thursday, January 29, 2015 at 10:10:34 AM UTC-5, Jonathon McKitrick >> wrote: >>> >>> Is there a rule of thumb or set of use cases when metadata is a more >>> elegant solution than simply adding more entries to a map or record? >>> >> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: When to use metadata
Metadata fields proliferate throughout the standard Clojure value and reference types. It seems odd that one would suggest that this seemingly well supported feature should not be taken advantage of except in very narrow circumstances. What is the rationale for such robust support for runtime metadata if their usage should be restricted primarily to compile-time or metaprogramming tasks? If that was the primary purpose, certainly a Common Lisp proclaim/declaim/declare-esque expression would be preferable since then the compiler and macros can take advantage of this information when reading forms without having to extract data out of symbols on an ad-hoc basis. It makes me think maybe we're missing the point here. Rich Hickey clearly carefully designed Clojure to support varied uses of runtime metadata on Clojure objects. On Friday, January 30, 2015 at 1:28:04 PM UTC-5, Stuart Sierra wrote: > > Almost never. > > Seriously, anything important enough to be included in your program's > input or output is almost certainly important enough to be *data*, not > metadata. And the non-equality-checking semantics of metadata are confusing. > > About the only place I've found metadata to be worthwhile is > meta-programming namespaces and Vars, e.g. what clojure.test does. > > My personal rule of thumb is: if you strip all the metadata from your > program it should still work, thought maybe less efficiently. > > –S > > > On Thursday, January 29, 2015 at 10:10:34 AM UTC-5, Jonathon McKitrick > wrote: >> >> Is there a rule of thumb or set of use cases when metadata is a more >> elegant solution than simply adding more entries to a map or record? >> > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: When to use metadata
Almost never. Seriously, anything important enough to be included in your program's input or output is almost certainly important enough to be *data*, not metadata. And the non-equality-checking semantics of metadata are confusing. About the only place I've found metadata to be worthwhile is meta-programming namespaces and Vars, e.g. what clojure.test does. My personal rule of thumb is: if you strip all the metadata from your program it should still work, thought maybe less efficiently. –S On Thursday, January 29, 2015 at 10:10:34 AM UTC-5, Jonathon McKitrick wrote: > > Is there a rule of thumb or set of use cases when metadata is a more > elegant solution than simply adding more entries to a map or record? > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: When to use metadata
Solussd is absolutely correct, but maybe even more simplistic (or easier to grasp) explanation would be to use metadata if you don't want the additional (meta)data to change the equality semantics of the map, for example: (def test-desc1 {:number-of-threads 10}) (def test-desc2 ^{:integration true} {:number-of-threads 10}) (def test-desc3 {:number-of-threads 10 :integration true}) (= test-desc1 test-desc2) ;; returns true (= test-desc1 test-desc2 test-desc3) ;; returns false, because while the first two vars reference equal values, the third one doesn't Dňa štvrtok, 29. januára 2015 16:10:34 UTC+1 Jonathon McKitrick napísal(-a): > > Is there a rule of thumb or set of use cases when metadata is a more > elegant solution than simply adding more entries to a map or record? > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: When to use metadata
Yes- when the data you want to add shouldn't affect the value of the map. --- Joe R. Smith @solussd > On Jan 29, 2015, at 9:10 AM, Jonathon McKitrick wrote: > > Is there a rule of thumb or set of use cases when metadata is a more elegant > solution than simply adding more entries to a map or record? > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
When to use metadata
Is there a rule of thumb or set of use cases when metadata is a more elegant solution than simply adding more entries to a map or record? -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.