On Tue, Nov 12, 2002 at 09:03:22PM +0000, Piers Cawley wrote:
: Hang on, couldn't you rewrite things to not use the cache?
:
: class is $class {
: sub value { &func(*@args) }
: method operator:+ ($self is rw:) { +($self = value) }
: method operator:~ ($self is rw:) { ~($self = value) }
: method operator:? ($self is rw:) { ?($self = value) }
: }.new
:
: I don't know if I hope that works or hope it fails miserably.
:
: Also note that, if you were feeling sufficiently lazy with numbers,
: you could define the set of binary operators for your deferred
: numbers:
:
: method operator:+ ($self: Num $other) is lazy { +($self) + $other }
: method operator:* ($self: Num $other) is lazy { +($self) * $other }
: method operator:/ ($self: Num $other) is lazy { +($self) / $other }
: method operator:- ($self: Num $other) is lazy { +($self) - $other }
:
: Or would that just be evil, Bad And Wrong?
I believe the correct term is "opaque". And I don't mean that
in the good sense...
Larry