[racket-dev] Removing Xexpr preference from Web Server
On Dec 6, 2010, at 12:08 PM, Carl Eastlund wrote:
> 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.
>
> 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.
Right, I'm not saying that contracts and coercions should be synonymous in our system. I'm just saying that there are lessons (and subsystems) that we can take from implementing an excellent contract system. If we want, we can apply these lessons to make an excellent coercion system, and perhaps now we _should_ start looking in that direction and see what results.
Stevie