
A Functional Pattern System for Object-Oriented Design - foobar_
https://web.archive.org/web/20080224141838/http://www.mm.informatik.tu-darmstadt.de:80/~kuehne/fps/
======
karmakaze
The 'some pages' link to the c2 wiki (aka Portland Patterns Repository) has a
good overview.

My key take-away:

> Since FunctorObjects are an enabling mechanism for LazyEvaluation some of
> the caveats for LazyEvaluation should be noted here. LazyEvaluation makes it
> impossible to know the exact order in which operations will be executed and
> in fact makes it possible for some operations not to be executed at all. It
> is therefore important to ensure that the FunctorObjects that may be lazily
> evaluated do not rely on state that may change during the time when
> LazyEvaluation may occur and that it does not change state that is relied on
> by other operations that may occur during the same time period.
> FunctorObjects? that can have side-effects are called Procedure Objects by
> ThomasKuehne. These are very useful but some care must be taken with the
> timing of their side-effects.

[0]
[http://wiki.c2.com/?FunctionalPatternSystemForObjectOriented...](http://wiki.c2.com/?FunctionalPatternSystemForObjectOrientedDesign)

