Appendix D
Index
Emboldened terms indicate where a term has been defined in the text. A term starting with an uppercase character generally refers to an identifier in the syntactic description or to a predefined function or operator in the library.
\
\ 19, 113
A
abort 27
abstract data type 10, 54
predefined 43
AbstractTypeDef 54, 115
actual node-id 3
algebraic data type 45
algebraic data type definition 47
AlgebraicTypeDef 45, 47, 48, 49, 94, 115
anonymous node variable 16
AnyChar 32, 117, 119
Application 18, 113
arity of a function 26, 27
array 31, 38, 39, 42
comprehension 40
generator 35
index 40
index 38
selection 42
Array 39, 114
ArrayDenotation 39, 114
ArrayExpr 35, 40, 114
ArrayIndex 42, 114
ArrayPattern 42, 113
ArraySelection 42, 114
ArrayType 38, 116
ArrayUpdate 40, 114
arrow type 43
ArrowType 43
ASCII 31
B
basic type 31, 32
BasicType 31, 115
BasicValue 31, 113
BasicValuePattern 32, 113
block structure 20
Bool 31, 32, 120
BoolDenotation 32, 117
BooleanExpr 35, 112
boxing 106
BrackGraph 18, 113
BrackPattern 16, 112
BrackType 26, 28, 29, 45, 48, 91, 94, 115
C
CAF 108
cartesian product 26, 43
case 20, 114, 120
case expression 20
CaseAltDef 20, 114
CaseExpr 20, 114
Char 31, 120
Char 32
CharDel 32, 33, 117
CharDenotation 32, 117
CharsDenotation 32, 33, 117
class 58, 63, 116, 120
enumeration type 35
ClassContext 59, 112
ClassDef 116
ClassMemberDef 58, 116
ClassName 5, 117
CleanProgram 7, 111
code 13, 120
Comment 119
conditional expression 20
console mode 7
constant
global 9
local 9
Constant Applicative Form 108
constant value 32, 45
Constructor 18, 113
constructor symbol 1
ConstructorDef 45, 47, 48, 49, 94, 115
ConstructorName 5, 117
context
lazy 106
strict 106
contractum 1
corresponding module 6
curried application 27
curried constructor application 46
curried type 43
currying 18
cyclic graph 24
D
data constructor 16, 45, 47
data structure 45
DataRoot 4
decimal number 31, 117
default 121
DefDefinition 10, 111
definition 7, 111, 120
global 9
local 9
definition module 6, 10, 54
DefinitionModule 7, 111
DefOfFunction 15, 112
DefOfMacro 108, 115
depending module 11
dictionary 57
Digit 6
directed arc 1
DotDotexpression 34, 114
E
E. 47, 48
enumeration type 35
existentially quantified variable 47, 48
ExplicitImportDef 11, 112
export 120
export 116
expression
initial 1
F
False 32, 117
field name 50, 52, 53
FieldName 5, 117
File 120
Fix 45, 115
Fix 26
fixity 16, 19, 27
flat type 65
foreign function 12
formal argument 16, 19
formal node-id 3
from 11, 112, 120
function 1
alternative 15
arity of a 27
constant 24
curried application of a 27
definition 15
global 9
local 9
partial 1, 17, 27
total 27
Function 18, 112
Function 15
function definition 1
function object 43
function symbol 1
function type 26
functional array update 40
functional record update 52
functional reduction strategy 2
FunctionAltDef 15, 112
FunctionBody 15, 112
FunctionDef 15, 112
FunctionDef 26
FunctionName 5, 116
FunctionType 26, 28, 29, 59, 112
FunctionTypeDef 26, 112
FunnyId 6, 117
G
garbage collection 108
garbage collector 25
generator
array 33
list 35
Generator 35, 114
Generators 35, 114
global definition 9
Global definition 10
global graph 4
global graph definition 108
global scope 11
Gofer ii
graph 1
Graph 4
graph definition 24
graph rewrite rule 1, 15
GraphDef 24, 107, 112
GraphExpr 18, 113
GraphPattern 16, 46, 113
GraphVariable 18, 113
guard 17, 35
nested 18
guard 15
Guard 17, 35, 112
guarded function body 15
H
head normal form 8
hexadecimal number 31, 117
HexDigit 32, 117
Hilt B.V. viii
Hindley 45
Hugs ii
I
I/O library i, 8
IdChar 6, 117
identifier 6
Identifier 119
if 120
if 20, 114
ImplDefinition 8, 111
implementation 7, 111
implementation 120
ImplementationModule 7, 111
implicit import.;ib.import
implicit 12
ImplicitImportDef 12, 112
import 12, 112, 120
import statement 11
ImportDef 11, 112
Imports 11, 112
in 120
in 21, 114
infix 26, 45, 46, 120
infix position 16, 46
infixl 26, 45, 46, 115, 120
infixr 26, 45, 115, 120
Initial 3, 4
initial expression 7, 8
instance 58, 64, 70, 72, 75, 116, 120, 121
Int 31, 32, 115, 120
IntDenotation 31, 117
IntegerExpr 42, 114
K
keyword 120
L
LambdaAbstr 19, 113
lay-out rule 9
lazy context 106
lazy evaluation 105
lazy semantics 49
left hand-side of a graph 1
let 21, 23, 112, 114
let // begin of let expression 120
let! 23, 112
LetBeforeExpression 23, 112
LetExpresssion 21, 114
Lexeme 119
LexProgram 119
LGraphExpr 33, 114
LGraphPattern 36, 113
list 32, 36
List 33, 114
list list generator 35
ListDenotation 33, 114
ListExpr 35, 114
ListPattern 36, 113
ListType 33, 115
Literal 119
local definition 9
LocalDef 21, 22, 112
LocalFunctionAltDefs 21, 112
LocalFunctionDefs 22, 112
LowerCaseChar 6, 117
LowerCaseId 5, 117
M
macro
global 9
local 9
macro definition 108
MacroDef 108, 115
MacroFixityDef 108, 115
MacroName 5, 117
main module 7
Milner 45
Miranda ii
mode
console 7
module 7, 111, 120
corresponding 6
definition 6
depending 11
implementation 6
pass-through 12
Module 7, 111
ModuleName 5, 116
N
name space 120
name spaces 6
nested guards 18
nested scope 6
node 1
node variable 16
anonymous 17
node-id 1
actual 3
applied 1
formal 3
node-id variable 16
node-identifier 1
normal form 2
O
object oriented programming 51
octal number 31, 117
OctDigit 32, 117
of 20, 114, 120
operator 16, 19, 27
constructor 46
Operator 113
otherwise 17
overloaded 58
overloading 6
P
partial function 1, 17, 27
partial match 2
pass-through module 12
pattern 1, 16
constructor 46
record 26
Pattern 16, 112
pattern match 17
pattern variable 16
PatternVariable 16, 113
polymorphic algebraic data type 45
Prec 45, 115
Prec 26
precedence 27
precedence 16, 19
PredefAbstrType 44, 116
program 1
program graph 1
projection function 25
Q
Qualifier 35, 114
QuantifiedVariables 26, 28, 45, 46, 47, 48, 94, 115
R
Real 31, 32, 120
RealDenotation 32, 117
recompilation 10
record 52, 53
Record 52, 114
record pattern 26
record selection 53
record type 50
RecordDenotation 52, 114
RecordExpr 52, 114
RecordPattern 53, 113
RecordSelection 53, 114
RecordTypeDef 51, 115
RecordUpdate 52, 114
redex 1
redirection 1
redirection of a node 2
reducer 2
reducible expression 1
reduct 1
reduction strategy 2
reference 1
ReservedChar 32, 117
ReservedKeywordOrSymbol = 120
rewrite of a redex 1
rewrite rules
comparing 1
right hand-side of a graph 1
root normal form 2, 8
root stable form 8
RootExpression 18, 112
rule
alternative 15
rule alternative 17
S
scope 6, 9, 20, 108
nested 6
surrounding 6
selection
by field name 50
by index 39
by position 50
Selection 40, 42, 52, 53, 114
Selection of a Record Field 53
Selection of an Array Element 42
selector 25
Selector 25, 35, 112, 114
selector variable 19, 25
SelectorVariable 5, 117
sharing 24
sharing analysis 96
Sign 32, 117
SimpleType 115
SML ii
Special 32, 117
SpecialChar 6, 117
Start 3, 4, 7
start rule 3
StartNode 4
Strict 37, 49, 107, 115
strict context 106
strict semantics 49
StringDel 32, 39, 117
StringDenotation 39, 117
strong root normal form 2
strong type system 45
sub-graph 2
sub-pattern 46
surrounding scope 6
symbol 1, 120
arguments of a 1
synonym type 54
SynonymTypeDef 54, 115
system 7, 111, 120
system definition module 12
system implementation module 12
T
Term Graph Rewriting 1
total function 27
tree 1
True 32, 117
tuple 37, 38
Tuple 37, 114
TuplePattern 38, 113
TupleType 37, 116
type
abstract data 54
algebraic data 45
array 38
arrow 43
basic 31
constructor
lazy array 43, 116
list 43, 116
strict array 43, 116
unboxed array 43, 116
context 58
curried 43
existential 48
flat 65
global 9
inferred 26
list 32
of a function 26
of partial function 27
record 50
synonym 54
tuple 37
variable 45
Type 26, 28, 29, 31, 91, 115
type class 58
definition of 58
member of 58
type specification 120
type variable 45
TypeClassDef 58, 63, 116
TypeClassInstanceDef 58, 64, 70, 72, 75, 116
TypeClassInstanceExportDef 116
TypeConstructor 45, 94
TypeDef 115
TypeDef 45
TypeLhs 45, 94, 115
TypeName 5, 117
TypeVariable 5, 117
U
unboxing 106
uniqueness type attribute 91
UniqueTypeVariable 5, 117
UnqTypeAttrib 91, 94, 115
UnqTypeUnEqualities 59, 112
update of a record
destructive 53
UpperCaseChar 6, 117
UpperCaseId 5, 117
V
variable 19
existentially quantified 47
node-id 16
selector 19, 25
type 45
Variable 5, 117
W
where 21, 58, 64, 112, 116, 120
where block 21
Whitespace 119
wildcard 16, 25
with 22, 112, 120
with block 22
world
abstract 8
concrete physical 8
World 7, 43, 120
world mode 8
Z
ZF-expression 33, 35, 114
1 Note that it is very natural in Clean to speak about references due to the underlying graph rewriting semantics of the language: it is always clear when objects are being shared or when cyclic structures are being created.