On Mon, Dec 6, 2010 at 11:58 AM, Stevie Strickland <sstrickl at ccs.neu.edu> wrote:
> On Dec 6, 2010, at 11:42 AM, Robby Findler wrote:
>> But this seems to perhaps be developing into something more
>> interesting. Maybe there is something more general than contracts and
>> we should have a contracts+X system that supports that, somehow.
>> Every time I discuss contracts with a visiting researcher, the first or second thing they always ask is, "What if you coerced to
> a good value instead of throwing an error?", so I'm not surprised that Jay indeed wants just that. I think he's just found an
> excellent first use case for it in our own system, and so now we should take a look at supporting such, as you have said
> above.
>> Stevie
I'm commenting on the general principle, not Jay's particular case,
but to me the main benefit of the contract system is helping uncover
bugs and giving good feedback about them. This kind of coercion
sounds like it is masking bugs, not uncovering them. It seems
directly counter to the purpose of contracts. In reasoning about
programs in ACL2, where every input is treated as a good input, I find
it harder to reason about the resulting programs, not easier.
Personally I would not want to see Racket go down the same road. If
we're going to have a coercion system, I would like to see a clear
line between the coercion system and the contract system. Muddying
the distinction between the two seems like a big potential problem to
me.
--Carl