Open emberian opened 7 years ago
I am a beginner with contracts, so this doesn't make a lot of sense to me... make-plug
didn't violate its own contract, so why is it getting blamed? (make-plug
is indeed what lies at logical-framework.rkt:251
)
Or am I misreading the blame message? Or is this one of those peculiarities that arises when using the top-level?
@david-christiansen
This confuses me too. I'll ask for an explanation from the real experts. It's not a top-level thing, because the same thing happens in a module.
Though I suppose it's something like this: https://docs.racket-lang.org/guide/contracts-gotchas.html#%28part._contracts-gotcha-nested%29
We should probably move to providing things as contract-out
now that the modules are getting more debugged.
For example, given some signature defining
(tp () (SORT))
, running(plug (tp))
will give:I suspect the blame is the way it is due to some match expander something or another? I'd expect it to blame me, since I'm the one who gave
plug
nonsense!