To further clarify, you can and should turn on spec’s instrumentation *during 
testing* (and interactive development) to get contract-system style 
inter-function call checking. To the extent those tests are themselves 
generative (e.g. spec’s) the coverage and ranges will be good.

As to whether an fn-returning function, *when instrumented*, should return 
instrumentation-wrapped fns, I don’t know. I’d be concerned about tracking them 
lest you can never unstrument them.


> On May 25, 2016, at 5:57 PM, Rich Hickey <richhic...@gmail.com> wrote:
> 
> In my mind, fspec is no different than fdef.
> 
> With fdef you specify what a function does. How do we know it works? - 
> generative testing. Wrappers only check individual calls.
> 
> Now you say your function returns a fn, and provides an fspec (same as fdef, 
> a trio of specs) for that. How do we know the returned fn (which is often 
> implemented anonymously, not a named thing we could fdef) works? It’s not a 
> different question so it has the same answer - generative testing.
> 
> spec is about making sure your programs _work_ *ahead of time* by using 
> generative testing, and leaving only application-domain required checks 
> active at runtime (i.e. checking your program would otherwise do manually).
> 
> Contracts are about making sure your _broken programs fail_ as soon as 
> possible at *(production?) runtime*, and do so at considerable runtime cost. 
> If you only activate them during testing then quality depends the coverage 
> and ranges of your test suite (usually poor).
> 
> spec is not a contract system.
> 
> Rich
> 
>> On May 25, 2016, at 4:05 PM, Ambrose Bonnaire-Sergeant 
>> <abonnaireserge...@gmail.com> wrote:
>> 
>> Rich,
>> 
>> Can you talk about the design process behind fspec?
>> 
>> What tradeoffs were in mind for fspec performing gen testing rather 
>> than a traditional function contract wrapper a la racket/contract?
>> 
>> Thanks,
>> Ambrose
>> 
>> On Mon, May 23, 2016 at 5:20 PM, Rich Hickey <richhic...@gmail.com> wrote:
>> I did most of the design of spec in a (paper) notebook.
>> 
>> The rationale tries to capture the salient driving forces.
>> 
>> If there is a specific question you have I’d be happy to answer.
>> 
>> Rich
>> 
>>> On May 23, 2016, at 4:11 PM, Ivan Reese <ivanre...@gmail.com> wrote:
>>> 
>>> Is there anywhere we can read anything about the design process behind 
>>> clojure.spec? I took a look at dev.clojure.org / JIRA, but I haven't yet 
>>> found anything on the topic.
>>> 
>>> --
>>> 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.
>> 
>> --
>> 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.
>> 
>> 
>> -- 
>> 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.
> 

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