On Jun 9, 2014, at 9:38 AM, Sam Tobin-Hochstadt <sa...@cs.indiana.edu> wrote:
> On Mon, Jun 9, 2014 at 3:19 AM, Eric Dobson <eric.n.dob...@gmail.com> wrote: >> >> It would be nice if the contract on the input to g could be elided. It >> seems like this could be done by using something like prop:contracted >> but that allowed accessing the parties that agreed to the contract. >> >> I'm imagining something like >> (lambda (v) (and (has-contract? v) (contracted-value-providing-side=? >> v 'the-typed-world) (contract-stronger? (value-contract v) >> new-contract))) >> >> One issue I see is that we need an unforgeable property that the value >> actually came from the typed world so we know that eliding the new >> contract is safe. >> >> Does this seem like a reasonable thing to support/do people see issues with >> it? > > It seems like this could be simplified a little just by allowing > contract parties to be compared. IOW, at the point where you're > writing that function, we have two contracts, and we need to know if > the negative party of one is the positive party of the other. Then > you don't need to worry about unforgeability, I think. Well some code could swap identities on such things. Not accidentally. Plus I think this would eliminate the anticipated benefits if there are chains of TR modules involved. I think Eric just needs to know whether something came out of the TR world and flows back w/o being touched. ;; --- Eric, are you talking about changing the proxy values that wrap HO/mutable contracted values? -- Matthias
smime.p7s
Description: S/MIME cryptographic signature
_________________________ Racket Developers list: http://lists.racket-lang.org/dev