There were a number of talks at the Conj that spoke directly to this challenge. One of the approaches I liked was Prismatic's schema.
https://github.com/Prismatic/schema And here's Aria's talk on it, since he can explain it better than I. https://www.youtube.com/watch?v=o_jtwIs2Ot8 On Sat, May 17, 2014 at 10:22 AM, Mike Fikes <mikefi...@me.com> wrote: > I've never used a dynamically-typed language and an issue I've encountered > with Clojure is a difficulty with readily "seeing" the data structures > being consumed or returned by functions I'm writing, especially when I come > back to them several days later and if those structures get to be somewhat > nested or otherwise complex. > > As a small concrete example, lets say that I currently have a function > that accepts data that looks like {:a "A" :b "B"} and, at some point I > change the internals of the function to instead operate on data that looks > like [[:a "A"] [:b "B"]]. > > I could see the docstring communicating that the initial implementation of > the function accepts a map, and then perhaps it boils down to finding > suitable language to describe the structure in the revised implementation > ("sequence of pairs", "relation", or some other language suitable to the > abstraction). > > I suppose this is no different than the "documentation" aspect that > generics provided in Java when we went from raw types like List to > List<String>, but, of course, generics can get unwieldy rather quickly with > things like List<Map<String,Set<Integer>>>. > > Does there exist idiomatic language that developers employ in their > docstrings to quickly convey this kind of info? I see that the docstrings > for clojure.core are fairly readable, but they tend to operate on very > simple data structures. > > -- > 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.