On Tue, 2 Nov 1999, Mark S. Miller wrote:
>
> An object with a single method. It is equivalent to
Thanks for the reminder.
Okay. How about this:
define BrandMaker make(name) {
define _key := []
define EnvelopeMaker make(contents) {
define Envelope {
to printOn(out) {
out print(`<Envelope sealed by $name>`)
}
to getContents(key) : any {
if (key == _key) {
contents
}
else {
throw(UnsealingException(
"envelope not sealed by matching sealer"))
}
}
}
}
define sealer {
to seal(contents) : any {
EnvelopeMaker make(contents)
}
}
define unsealer {
to unseal(envelope) : any {
envelope getContents(_key)
}
}
[sealer, unsealer]
Notes:
Does this work?