Here's one use case: Let's say you want to develop a library that monitors system behavior and resources while functions are executed (or while collections are processed). You might have a collection of monitoring functions (we'll call them sensors) that check various things, like disk I/O activity.
We now need a way to annotate our other functions and collections (maps, vectors, etc) with the sensors that concern them. For example, maybe we want to ensure a given function doesn't run off with exponential disk writing (commonly called a 'log explosion') - this defect caused one of the Mars Rovers to crash. One way is to attach the sensors directly to the functions in the form of metadata. You could then run the functions in a special context that executed sensors from any piece of metadata. - - - Another example might be that you want to attached additional specification information to functions, so you can run some sort of analysis/verification against your code - - - It's difficult to spot the best time to apply metadata, since we've become accustomed to working in languages without support for it. Anytime you want to convey programmatic meaning about entities themselves, metadata is an elegant solution. I hope this helps a little. Paul -- 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