Patterns and Compositionality
Massimo Dentico
m.dentico@teseo.it
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
excluded.
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
reasoning.
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
languages.
--
Massimo Dentico