I've written a library that tries to solve this, instead of making conforms that do coercion, it uses the spec and a separated registry to conform the value (similar to what spec does to find the generators for a given spec). You can find the library at: https://github.com/wilkerlucio/spec-coerce. This way you don't complect the conformance with coercion.
On Thursday, February 22, 2018 at 11:19:35 PM UTC-3, Didier wrote: > > Map specs are about attribute aggregation, not about types. >> > > I understand the design philosophy. I think that's great. What I meant I > guess is that it would be nice to also have a declarative way to relate > Types to Specs, for when Specs fall short of types. Then you'd have the > best of both world. Specs where Types fall shorts, and Types where Specs > fall shorts. > > You can effectively do this already. When you have s/keys maps which are >> sets of attributes, you can simply combine sets (base and extensions) using >> s/merge. Or when needing more polymorphism, s/multi-spec. >> > > I guess I'm talking about Types as in primitive types included. So if I > create a String type, I can describe what is the set of values for the type > using a spec. Similarly, I now know that the Type and the Spec used to > describe its possible set of values are equivalent. So I now know the > relationship between them. > > The real reason I want this is so that I can auto-generate client code in > different languages for my Specs. > > I'm thinking of it as a more generic Swagger OpenAPI specification. > > Maybe what I'm thinking off doesn't make sense, its all kind of at the > blurry idea phase in my head. > > Currently, I manually have an equivalent set of Java Classes which > correspond to the specs of my data which gets shared between Java and > Clojure systems. And I manually have functions which converts a piece of > data from a given Spec, into its Java equivalent representation and back. > I've been thinking about how I could have the equivalent Java classes be > auto-generated, as well as the conversion be automatic. The biggest > challenge is knowing what Java types would a given Spec map too. So I > thought if I my spec could have a mapping on them too, then it wouldn't be > too hard. When you write your Spec, you could associate it with an > enclosing Type, and then from the Specs I might be able to auto-generate > the Java model classes. > > Anyways, the whole thing is incubating in my head. And I can probably do > it on top of Spec if I really needed too. > > On Wednesday, 21 February 2018 18:47:20 UTC-8, Alex Miller wrote: >> >> >> On Wednesday, February 21, 2018 at 7:34:00 PM UTC-6, Didier wrote: >>> >>> I would actually love it if Spec was extended to have the concept of >>> types. >>> >> >> Map specs are about attribute aggregation, not about types. >> >> https://clojure.org/about/spec#_map_specs_should_be_of_keysets_only >> >> >>> Something where every spec could be tied to a Type, and types could be >>> constructed to have Hierarchies. >>> >> >> You can effectively do this already. When you have s/keys maps which are >> sets of attributes, you can simply combine sets (base and extensions) using >> s/merge. Or when needing more polymorphism, s/multi-spec. >> >> -- 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.