• Contents

  • Abstract Chapter 2
  • Abstract Chapter 3
  • Abstract Chapter 4
  • Abstract Chapter 5
  • Abstract Chapter 6
  • Summary
  • Samenvatting

  • 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 Single Interactive Functional Programs 15

    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 Interleaved Interactive Functional Processes 43

    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 Concurrent Interactive Functional Processes 69

    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 Data Abstraction 87

    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 Object Structures 103

    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