Re: spec/conform: + vs * differ sometimes, not sure why

2017-08-10 Thread Peter Hull


> 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

2017-07-31 Thread Cole Frederick
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

2017-07-30 Thread Alex Miller
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.