... Yet another con-
straint programming library. In Workshop on Parallelism and Implementa-
tion Technology for Constraint Logic Programming, International Confer-
ence on Logic Programming (ICLP ... Sverker Janson and Seif Haridi. Programming paradigms of the Andor-
ra Kernel Language. In International Symposium on Logic Programming,
pages 167–183, October 1991.
[94] K. Jensen a...
... concepts,
Copyright
c
200 1-3 by P. Van Roy and S. Haridi. All rights reserved.
x CONTENTS
7.5 Relationtoothercomputationmodels 543
7.5.1 Object-basedandcomponent-basedprogramming 543
7.5.2 Higher-orderprogramming ... general models. For
example, the concepts of lexical scoping and higher-order programming, which are
usually associated with functional programming, are useful in...
... Concurrent ML [158]
and Concurrent Haskell [149, 147]).
Copyright
c
200 1-3 by P. Van Roy and S. Haridi. All rights reserved.
Concepts, Techniques, and Models
of Computer Programming
PETER VAN ... appropriate.
Copyright
c
200 1-3 by P. Van Roy and S. Haridi. All rights reserved.
x CONTENTS
7.5 Relationtoothercomputationmodels 543
7.5.1 Object-basedandcomponent-base...
... more pos-
sible interleavings. Programming with concurrency and state together is largely
a question of mastering the interleavings. In the history of computer technol-
ogy, many famous and dangerous ... data-driven and demand-driven evaluation, respectively.
Copyright
c
200 1-3 by P. Van Roy and S. Haridi. All rights reserved.
16 Introduction to Programming Concepts
els...
... of many other techniques. This book focuses on three in particu-
lar: object-oriented programming, graphical user interface (GUI) design, and
component-based programming. In object-oriented programming, ... with single-shot channels. Chapters 4 and 5 show other types of
channels (with sequences of messages) and do concurrent composition of processes.
Copyright
c
200 1-3 b...
... instead of standard lists:
• Flatten of
nil is X#X (empty difference list).
• Flatten of
X|Xr where X is a nested list, is Y1#Y4 where
flatten of
X is Y1#Y2,
flatten of
Xr is Y3#Y4 ,and
equate
Y2 and ... removing more and more of the
left-hand part of
T2. Eventually, T2’s left subtree is removed completely and the
right subtree takes its place. Continuing in this way,
T2 shr...
... introduces the lazy concurrent model and gives some of the most
important programming techniques, including lazy streams and list compre-
hensions.
• Soft real-time programming. Section 4.6 explains ... some
other techniques, namely order-determining concurrency, coroutines, and
concurrent composition.
• Lazy execution. This part explains the second form of declarative con-
c...
... in
the larger context of component-based programming. Because of message-passing
concurrency we no longer have the limitations of the synchronous “lock-step”
execution of Chapter 4.
We first introduce ... operation of the hypothetical lift control system of a build-
ing, with a fixed number of lifts, a fixed number of floors between which lifts
travel, and users. Figure 5.4 giv...
... Algol-60 and structured
programming [46, 45, 130], which led to Simula-67 and object-oriented program-
ming [137, 152].
2
This book sticks to the traditional usage of declarative as stateless and ... elements of an array:
Copyright
c
200 1-3 by P. Van Roy and S. Haridi. All rights reserved.
415
A problem of terminology
Stateless and stateful programming are often calle...
... loosely define object-oriented programming as
programming with encapsulation, explicit state, and inheritance. It is often sup-
ported by a linguistic abstraction, the concept of class, but it does ... The first way, often-used in object-oriented programming,
uses inheritance. The second way uses higher-order programming. We will see
that the first way is just a syntactic variation o...