On 11/3/05, Luke Palmer <[EMAIL PROTECTED]> wrote:
> If Foo2 were a role (that is, if it obeys the role relation above),
> then the only thing bar2() could do would be to take some side-effect
> action and then return the same object it was passed. Here's a proof:
>
> Given ^T $x where Foo{^T}. Because of the role relation,
> Foo{{$x}} (The singleton set {$x} does Foo). Therefore
> the signature of bar in this instance is
> :({$x} --> {$x}). Since $x was unrestricted, bar()
> must be the identity on things that do Foo.
Excuse me, s:g/Foo/Foo2/; s:g/bar/bar2/.
Luke