I've tweaked that section of the doc to try to make that more explicit.

On Thursday, May 26, 2016 at 10:12:43 AM UTC-5, Alex Miller wrote:
>
> I think the connection is that you are (always) describing function 
> arguments using regex ops. Maybe that could be made clearer.
>
> On Thursday, May 26, 2016 at 9:23:43 AM UTC-5, Sven Richter wrote:
>>
>> Do you refer to this section?
>>
>> "When regex ops are combined, they describe a single sequence. If you 
>> need to include a nested sequential collection, you must use an explicit 
>> call to spec to start a new nested regex context. For example to describe a 
>> sequence like [:names ["a" "b"] :nums [1 2 3]], you need nested regular 
>> expressions to describe the inner sequential data:"
>>
>> If so, I did read it, but did not connect it inner seqs, but instead 
>> always thought it was about regexes, which in my head is something totally 
>> different than function definitions and their arguments.
>>
>> Anyway, I am trying to provide useful feedback here, you all have done a 
>> great job!
>>
>> Thanks,
>> Sven
>>
>> Am Donnerstag, 26. Mai 2016 14:53:13 UTC+2 schrieb Alex Miller:
>>>
>>> There is an example like this in the Sequence section and a bit on this 
>>> issue in particular.
>>>
>>> On Thursday, May 26, 2016 at 7:08:44 AM UTC-5, Sven Richter wrote:
>>>>
>>>> Ah thanks, that worked, not quite as I expected. Up until this point it 
>>>> was pretty straightforward for me, thats been my fist bummer.
>>>>
>>>> Do you have an example for this in the guide? I did not fully read it, 
>>>> but I think I scrolled through everything that used fdefs.
>>>>
>>>> Best Regards,
>>>> Sven
>>>>
>>>> Am Donnerstag, 26. Mai 2016 12:21:15 UTC+2 schrieb Alex Miller:
>>>>>
>>>>> It's a little tricky but you want:
>>>>>
>>>>> (s/fdef remove-autoinc-columns :args (s/cat :cols (s/spec ::columns)))
>>>>>
>>>>> Here the args data is ([{:foo "some_t"}]) and while you have an s/cat 
>>>>> for :args and an s/cat in ::columns, those will be combined into the same 
>>>>> regex so that's basically the same thing as ::columns. You need to force 
>>>>> a 
>>>>> new level of regex context and the s/spec will do that.
>>>>>
>>>>> On Thursday, May 26, 2016 at 4:32:52 AM UTC-5, Sven Richter wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I already asked this in the spec channel on slack, but got no 
>>>>>> response yet.
>>>>>>
>>>>>> I have this simple spec definition:
>>>>>>
>>>>>> (s/def ::foo string?)
>>>>>>
>>>>>> ​
>>>>>>
>>>>>> (s/def ::column (s/keys :req-un [::foo]))
>>>>>>
>>>>>> ​
>>>>>>
>>>>>> (s/def ::columns (s/cat :col (s/* (s/spec ::column))))
>>>>>>
>>>>>> ;(s/def ::columns (s/cat :col (s/* ::column)))
>>>>>>
>>>>>> ​
>>>>>>
>>>>>> (defn remove-autoinc-columns [cols]
>>>>>>
>>>>>>   (vec (remove #(= true (:autoinc %)) cols)))
>>>>>>
>>>>>> ​
>>>>>>
>>>>>> (s/fdef remove-autoinc-columns :args (s/cat :cols ::columns)
>>>>>>
>>>>>>         :ret ::columns)
>>>>>>
>>>>>> ​
>>>>>>
>>>>>>
>>>>>> $(remove-autoinc-columns [{:foo "some_t"}])
>>>>>>
>>>>>> ===> ExceptionInfo Call to 
>>>>>> #'de.sveri.clospcrud.s-play/remove-autoinc-columns did not conform to 
>>>>>> spec:
>>>>>>
>>>>>> At: [:args] val: ([{:foo "some_t"}]) fails predicate: (cat :cols 
>>>>>> :de.sveri.clospcrud.s-play/columns),  Extra input
>>>>>>
>>>>>> :clojure.spec/args  ([{:foo "some_t"}])
>>>>>>
>>>>>>   clojure.core/ex-info (core.clj:4617)
>>>>>>
>>>>>>
>>>>>> On the other hand, running this:
>>>>>> (s/conform ::columns [{:foo "some_t"}])
>>>>>> => {:col [{:foo "some_t"}]}
>>>>>> works.
>>>>>>
>>>>>> So something is broken within the fdefs argument definition.
>>>>>>
>>>>>> I dont see my mistake here, can somone else reproduce / fix this?
>>>>>>
>>>>>> Thanks,
>>>>>> Sven
>>>>>>
>>>>>

-- 
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.

Reply via email to