Re: spec/conform: + vs * differ sometimes, not sure why
> On Sunday, July 30, 2017 at 6:55:04 AM UTC-6, Alex Miller wrote: >> >> This is a bug, similar to https://dev.clojure.org/jira/browse/CLJ-2105 >> and http://dev.clojure.org/jira/browse/CLJ-2003. I've spent a little >> time on it but have not figured out the exact problem. If you'd like to >> file it and reference those and/or drop it as a comment on one of those, >> would be happy to have more cases to verify when it's fixed. >> > I notice that Tyler Tallman has posted a patch for CLJ-2003 recently ( https://dev.clojure.org/jira/browse/CLJ-2003). Would be worth a look to see if this solves your problem and also CLJ-2105. Pete -- 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: spec/conform: + vs * differ sometimes, not sure why
Awesome. Can do! Thank you. On Sunday, July 30, 2017 at 6:55:04 AM UTC-6, Alex Miller wrote: > > This is a bug, similar to https://dev.clojure.org/jira/browse/CLJ-2105 > and http://dev.clojure.org/jira/browse/CLJ-2003. I've spent a little time > on it but have not figured out the exact problem. If you'd like to file it > and reference those and/or drop it as a comment on one of those, would be > happy to have more cases to verify when it's fixed. > > On Sunday, July 30, 2017 at 1:33:45 AM UTC-5, Cole Frederick wrote: >> >> Hi to anyone reading, >> I'm trying to understand a difference in behavior when using >> clojure.spec/conform on two different regex ops: + and *. >> They often conform the same when there is at least one item, but not >> always. >> >> One small case I've found is: >> (s/def ::evens-or-odds (s/alt :evens (s/+ even?) >> :odds (s/+ odd?))) >> >> (defn conform-test [nums] >> (let [star (s/conform (s/* ::evens-or-odds) nums) >> plus (s/conform (s/+ ::evens-or-odds) nums)] >> [(= star plus) >> star >> plus])) >> >> (conform-test [1 2 3]) => >> [true >> [[:odds [1]] [:evens [2]] [:odds [3]]] >> [[:odds [1]] [:evens [2]] [:odds [3 >> >> (conform-test [1 2 2]) => >> [false >> [[:odds [1]] [:evens [2 2]]] >> [[:odds [1]] [[:evens [2 2] >> >> (conform-test [1 2 2 3]) => >> [false >> [[:odds [1]] [:evens [2 2]] [:odds [3]]] >> [[:odds [1]] [[:evens [2 2]] [:odds [3] >> >> They conform the same for the first, but on the second and third, the + >> regex wraps all but the first group in a vector. I believe it has something >> to do with nested regex ops, but I haven't figured out the pattern. >> >> Same conform value: >> [1 2] >> [1 2 3] >> [1 1 2 3] >> >> Different conform values: >> [1 2 2] >> [1 2 2 3] >> [1 2 3 3] >> >> I appreciate your time and any insight or ideas about why these sets of >> cases conform differently. >> Thanks, >> Cole >> > -- 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: spec/conform: + vs * differ sometimes, not sure why
This is a bug, similar to https://dev.clojure.org/jira/browse/CLJ-2105 and http://dev.clojure.org/jira/browse/CLJ-2003. I've spent a little time on it but have not figured out the exact problem. If you'd like to file it and reference those and/or drop it as a comment on one of those, would be happy to have more cases to verify when it's fixed. On Sunday, July 30, 2017 at 1:33:45 AM UTC-5, Cole Frederick wrote: > > Hi to anyone reading, > I'm trying to understand a difference in behavior when using > clojure.spec/conform on two different regex ops: + and *. > They often conform the same when there is at least one item, but not > always. > > One small case I've found is: > (s/def ::evens-or-odds (s/alt :evens (s/+ even?) > :odds (s/+ odd?))) > > (defn conform-test [nums] > (let [star (s/conform (s/* ::evens-or-odds) nums) > plus (s/conform (s/+ ::evens-or-odds) nums)] > [(= star plus) > star > plus])) > > (conform-test [1 2 3]) => > [true > [[:odds [1]] [:evens [2]] [:odds [3]]] > [[:odds [1]] [:evens [2]] [:odds [3 > > (conform-test [1 2 2]) => > [false > [[:odds [1]] [:evens [2 2]]] > [[:odds [1]] [[:evens [2 2] > > (conform-test [1 2 2 3]) => > [false > [[:odds [1]] [:evens [2 2]] [:odds [3]]] > [[:odds [1]] [[:evens [2 2]] [:odds [3] > > They conform the same for the first, but on the second and third, the + > regex wraps all but the first group in a vector. I believe it has something > to do with nested regex ops, but I haven't figured out the pattern. > > Same conform value: > [1 2] > [1 2 3] > [1 1 2 3] > > Different conform values: > [1 2 2] > [1 2 2 3] > [1 2 3 3] > > I appreciate your time and any insight or ideas about why these sets of > cases conform differently. > Thanks, > Cole > -- 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.