Thanks Alex! I didn't know this. On Tue, May 24, 2016 at 3:10 PM, Alex Miller <a...@puredanger.com> wrote:
> The first use is a namespace alias and the second is a var - they don't > overlap in usage. > > > On Tuesday, May 24, 2016 at 2:28:11 AM UTC-5, Atamert Ölçgen wrote: >> >> Isn't s redefined in this example: >> >> user=> (require '[clojure.spec :as s]) >> (s/def ::even? (s/and integer? even?)) >> (s/def ::odd? (s/and integer? odd?)) >> (s/def ::a integer?) >> (s/def ::b integer?) >> (s/def ::c integer?) >> (def s (s/cat :forty-two #{42} >> :odds (s/+ ::odd?) >> :m (s/keys :req-un [::a ::b ::c]) >> :oes (s/* (s/cat :o ::odd? :e ::even?)) >> :ex (s/alt :odd ::odd? :even ::even?))) >> user=> (s/conform s [42 11 13 15 {:a 1 :b 2 :c 3} 1 2 3 42 43 44 11]) >> {:forty-two 42, >> :odds [11 13 15], >> :m {:a 1, :b 2, :c 3}, >> :oes [{:o 1, :e 2} {:o 3, :e 42} {:o 43, :e 44}], >> :ex {:odd 11}} >> >> >> in http://clojure.org/about/spec >> >> >> On Mon, May 23, 2016 at 5:12 PM, Rich Hickey <richhic...@gmail.com> >> wrote: >> >>> Introducing clojure.spec >>> >>> I'm happy to introduce today clojure.spec, a new core library and >>> support for data and function specifications in Clojure. >>> >>> Better communication >>> >>> Clojure is a dynamic language, and thus far we have relied on >>> documentation or external libraries to explain the use and behavior of >>> functions and libraries. But documentation is difficult to produce, is >>> frequently not maintained, cannot be automatically checked and varies >>> greatly in quality. Specs are expressive and precise. Including spec in >>> Clojure creates a lingua franca with which we can state how our programs >>> work and how to use them. >>> >>> More leverage and power >>> >>> A key advantage of specifications over documentation is the leverage >>> they provide. In particular, specs can be utilized by programs in ways that >>> docs cannot. Defining specs takes effort, and spec aims to maximize the >>> return you get from making that effort. spec gives you tools for leveraging >>> specs in documentation, validation, error reporting, destructuring, >>> instrumentation, test-data generation and generative testing. >>> >>> Improved developer experience >>> >>> Error messages from macros are a perennial challenge for new (and >>> experienced) users of Clojure. specs can be used to conform data in macros >>> instead of using a custom parser. And Clojure's macro expansion will >>> automatically use specs, when present, to explain errors to users. This >>> should result in a greatly improved experience for users when errors occur. >>> >>> More robust software >>> >>> Clojure has always been about simplifying the development of robust >>> software. In all languages, dynamic or not, tests are essential to quality >>> - too many critical properties are not captured by common type systems. >>> spec has been designed from the ground up to directly support generative >>> testing via test.check https://github.com/clojure/test.check. When you >>> use spec you get generative tests for free. >>> >>> Taken together, I think the features of spec demonstrate the ongoing >>> advantages of a powerful dynamic language like Clojure for building robust >>> software - superior expressivity, instrumentation-enhanced REPL-driven >>> development, sophisticated testing and more flexible systems. I encourage >>> you to read the spec rationale and overview >>> http://clojure.org/about/spec. Look for spec's inclusion in the next >>> alpha release of Clojure, within a day or so. >>> >>> Note that spec is still alpha, and some details are likely to change. >>> Feedback welcome. >>> >>> I hope you find spec useful and powerful! >>> >>> Rich >>> >>> -- >>> 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. >>> >> >> >> >> -- >> Kind Regards, >> Atamert Ölçgen >> >> ◻◼◻ >> ◻◻◼ >> ◼◼◼ >> >> www.muhuk.com >> > -- > 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. > -- Kind Regards, Atamert Ölçgen ◻◼◻ ◻◻◼ ◼◼◼ www.muhuk.com -- 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.