Contents
1 Introduction 1
1.1 Functional programming and the Clean project...............2
1.2 Research objectives........................................3
1.3 Research themes............................................4
1.4 World-as-value.............................................5
1.5 Structured programming with state transition systems.......8
1.6 Interactive functional processes...........................11
1.7 Outline of the thesis......................................12
1.8 Topics outside the scope of the thesis.....................13
2.1 Introduction...............................................16
2.2 Clean......................................................17
2.3 Uniqueness types...........................................19
2.4 Explicit multiple environment passing......................20
2.5 File I/O...................................................23
2.6 Graphical user I/O.........................................25
2.7 Structuring interactive programs...........................35
2.8 Implementation of the interface............................38
2.9 Related work...............................................39
2.10 Conclusions................................................41
2.11 Current and future work....................................42
3.1 Introduction...............................................44
3.2 The Clean event I/O system.................................45
3.3 Dynamic process creation...................................52
3.4 Data sharing...............................................56
3.5 Message passing............................................59
3.6 Example....................................................63
3.7 Related work...............................................66
3.8 Conclusions................................................66
3.9 Current and future work....................................66
4.1 Introduction...............................................70
4.2 The interleaved event I/O system...........................72
4.3 Towards the concurrent event I/O system....................76
4.4 Remote procedure call processes............................77
4.5 Files as global process....................................80
4.6 Concurrent processes.......................................82
4.7 Concurrent implementation..................................83
4.8 Related work...............................................85
4.9 Conclusions................................................85
4.10 Current and future work....................................85
5.1 Introduction...............................................88
5.2 Uniqueness types...........................................90
5.3 The effect of uniqueness types.............................91
5.4 Reconciling procedural abstraction with uniqueness.........93
5.5 Efficiency.................................................97
5.6 Related work...............................................100
5.7 Conclusions................................................101
6.1 Introduction...............................................104
6.2 A framework of objects.....................................105
6.3 Type and constructor classes in Clean......................107
6.4 The type of the interpretation functions...................109
6.5 Applications of the framework..............................111
6.6 Related work...............................................114
6.7 Conclusions................................................115
6.8 Current and future work....................................115
7 Conclusions 117
7.1 Summary....................................................118
7.2 The role of the type system................................119
7.3 The role of graph rewriting................................119
7.4 The world-as-value paradigm................................120
7.5 Processes as building blocks...............................120
7.6 Portable interactive programs..............................121
7.7 Efficiency.................................................121
7.8 Future work................................................123
A Concurrent Event I/O Library 125
A.1 General definitions........................................126
A.2 Process combinators........................................134
A.3 Control device.............................................136
A.4 Menu device................................................139
A.5 Receiver device............................................141
A.6 Timer device...............................................142
A.7 Window device..............................................144
A.8 StdFile....................................................148
B Remote Procedure Calls 151
B.1 The definition of ShareRPC.................................152
B.2 The definition of SendRPC..................................152
B.3 Operations on SuccessOrFail................................153
B.4 Operations on GState.......................................153
B.5 Operations on PState.......................................153
B.6 Operations on RuntimeState.................................154
References 155
Index 163
Summary 171
Samenvatting 173
Curriculum Vitae 175