Patterns and Compositionality

Massimo Dentico
Thu, 27 Jan 2000 13:47:09 +0100

Jim Little wrote:
> I haven't read the paper yet (but I plan to), but I did want to
> contribute a definition:
> Massimo Dentico wrote:
> > (I am not aware of any formal definition
> > of "pattern" in "software engineering", so I suppose that equating
> > it with the "pattern" in functional and logic programming sense is
> > correct;  is it the same in the Scandinavian school of OO (Beta)?)
> Design patterns are based on the patterns of Christopher Alexander.
> Christopher Alexander was an architect, so I doubt there's any
> correlation with functional programming.  Here's the definition from
> _Design Patterns,_ the premier book on the subject:
> "A design pattern names, abstracts, and identifies the key aspects of a
> common design structure that make it useful for creating a reusable
> object-oriented design.  The design pattern identifies the participating
> classes and instances, their roles and collaborations, and the
> distribution of responsibilities.  Each design pattern focuses on a
> particular object-oriented design problem or issue.  It describes when
> it applies, whether it can be applied in view of other design
> constraints, and the consequences and trade-offs of its use."
> Based on this definition, your later assertion, below, doesn't apply.
> > So,  it's seem to me that is  the formal framework of reference to
> > be inadequate, not  the whole functional/logic languages as stated
> > by Wegner (some has pattern matching).
> Jim

Why doesn't  it apply,  Jim?   Given an intuitive definition  of a
concept,  a  more rigorous  (or  even formal)  definition  has not

The  context  is: "[..]  If  generalizing  a  pattern  is  lambda-
abstraction and inlining a pattern is beta-expansion [..]".  So, I
have  rendered  explicit  my premises  just  to make  feasible  an
objection to my reasoning. But the intuitive definition of pattern
doesn't invalidate /a priori/ a more rigorous one.

I suspect that  Fare speaks about the "hype"  (I'm not sure  about
the meaning  of this word),  around  the useful  idea  of pattern,
exactly  because  the  lack  of a precise definition  prevent  any
attempt  of  rigorous  reasoning   (for  example,  comparisons  of 
expressiveness with other frameworks).

Instead the problem is:  the rigorous definition cathces the whole
intuitive  definition?  The  paper  of Wegner (as I understand it)
tries  to  answer  this  question  relatively  to  the  notion  of
computability,  the intuitive  compared  to the formal notion.  He
suggests  that   Multi-Stream  Interection  Machines  (MIMs)   and
co-inductive  reasoning  give  a  stronger  model  of  computation
compared  to  Turing  Machines,   lambda  calculus  and  inductive

The intention of my original post was  to highlight  the fact that
if Wegner  and my equation are right  then,  even in the field  of functional/logic 
programming,   the  formal  model  of  reference
(lambda  calculs)  doesn't  catch  the  expressive  power  of this

Massimo Dentico