Index
Notion indexNOTION INDEX
aborting a computation 58
abstract data types : see types (abstract data types)
accessing
a list 23
a string 32
an array 31
adding one maplet to a map 28, 29
addition 12, 35, 37
Amiga 59
applying a map 25
arbitrary precision
arithmetic 40
arc cosine 39
arc sine 39
arc tangent 39
argument 39
array 18
arrays 17, 30
ASCII 31, 76
ASCII code 32
assignment 30
backtracking 9, 10
batch session 61
belongs to 25
Bezout’s Theorem 45
bit reversal 44
bit vectors 44
booting 59
breakpoints 56
bugs 79
C 68
cache
in map operations 25
in quotient and modulo 40
call stack 56
CAML 18
cardinal 9, 25
ceil 39
characters : see strings
checkpoints 18
chinese remainder 45
choice : see quantifications (choice)
choosing an element in a map 24, 27
classes 50
classification of numbers 36, 37
code of a character 32
code points 66
communication 18
comparison
of integers 35
of numbers 38
of strings 32
compilation 63
complex numbers 11, 16, 56
composition
of functions 22
of maps 29
concatenation 44
of lists 23
of strings 20, 32
conditional compilation 68
conjugate 38
conjunction 35, 45
continuations 18, 56
applying 18, 58
reifying 18, 57
converting
a character into a number 32
a list into a map 29
a list into a string 32
a number into a character 32
a string into a list 31
units 12
coroutine 57
cosine 39
creating
a new array 31
a new reference 30
creator 57
cross-product 3
cryptography 48, 49
current file position 51
datatypes : see types (datatypes)
debugging 56, 64
decrementing 36
delaying 18, 57
denormalized numbers 36, 37
dependency 63
dereferencing
a reference 30
an element of an array 31
difference of sets 28
dimensions 11, 15
disjunction 35, 45
division 12, 35, 37, 39, 40
domain description 3
ranging over elements of a list 3
ranging over elements of a set 3
ranging over maplets in a map 3
ranging over submaps of a map 3
traversal order 3, 4, 5
domain of a map 24, 25, 28
domain restriction 25, 26, 28
dynamics 18, 51
editor 76
elaboration : see typing
elements
of a list 30
of a map 25
of a set 25
ellipsis
in record patterns 19
in record types 19
in set patterns 9
in tuple patterns 18
in tuple types 18, 19
elliptic curve method 50
Emacs mode 76
empty map 10, 24
empty record 13
empty set : see
empty tuple 13
equality 22
admitting equality 19
admitting equality 3, 10, 11, 15, 18, 19, 20, 22, 30
hidden uses 37
of numbers 37
equality declaration 20
equality types : see equality (admitting equality)
Euclidean algorithms 45
exception handlers 57
exceptions 18, 21, 64
exclusive or 35, 45
executable specification : see specification
exhaustive patterns 21
existential quantification : see quantifications (existential)
explosion of a string 31
exponential 38
exponentiation : see power operation
extended gcd 45
extensible types : see types (tuple and record)
extension of types 13, 19
factoring
by Pollard’s ρ algorithm 48
factoring integers 50
feature record 56
field selector : see selector
fields 19
numerical 13, 19
files 13, 51, 52
filter 3, 4
floating-point numbers 11, 16, 36, 56
floor 39
flushing a stream 50
forcing a promise 18, 57
functions 20
garbage collection 21, 58, 59, 62
Gcd 45
gcd 45
getting an element of a list 23
GNU Emacs 76
Greatest common divisor 45
greatest common divisor 45
grep 33
header file 73
himml-mode.el 76
HimML.trace 59
hyperbolic functions 39
IEEE754 36, 56
image of an element by a map 25
imaginary part 38
imperative comprehension 6
imperative types 11, 18, 56
implosion of a string 32
importing 71
improving the implementation 79
inclusion
of maps 25
of sets 25
incremental functions 27
incrementing 35
indices of a list 29
infinity 36
inheritance
multiple inheritance 13, 19, 20
single inheritance 13, 19
initialization 61
input : see streams
input/output 13, 50, 61
integer part
lower 39
upper 39
integers 40
interleaving : see domain description (traversal order)
intersection 24, 28, 45
interval : see range of numbers
inverse of a map 29
iteration : see quantifications (iteration)
Jacobi symbol 43
Jean Goubault 57
labels 13, 19
large integer 40
last toplevel expression 55
lazy data structures 18
leak (space) 58
leaving a session 58
Legendre symbol 43
length
of a list 23
of a string 31, 32
of an array 31
Lenstra, Arjen 40, 50
linking 63
linking a module 72
lists 20, 22
defined by comprehension 5, 21, 23, 26
defined by imperative comprehension 7
load path 61
loading a file 59
logarithm 39, 43
base 2 44
Macintosh 59
maintenance 57, 79
make 63, 75
makefile 63
maplets 2
maps : see sets
maximum 35, 38
measure units : see units
memoization 2, 14, 27, 57
as an alternative to promises 18
memory usage policy 60, 62
methods 50
Miller-Rabin test 48
minimum 35, 38
ml-mode.el 76
modifying a reference 30
modifying an array 31
modular arithmetic
Montgomery 40, 46
standard 45
modules 2, 56
modulo 35, 39, 40
Montgomery 40, 46
multiplication 35, 37
of numerical types 11, 15, 20
of scales (units) 12, 20
mutable : see references, arrays
NaN 36, 38
natural numbers 40
negation 35, 45
integer 35
logical 22
numerical 38
nondeterminism 3, 4, 5
Not a Number : see NaN
numerical labels : see fields (numerical)
numerical types : see types (numerical)
numerical values 2, 11, 12
object module 72
opening a file 51, 52
opening a module 72
operating system 56, 58
order of traversal : see domain description
output : see streams
overwriting 4, 6, 26, 27, 28
patterns
records 19
sets and maps 4, 9
tuples 18
physical units : see units
π 38
Pollard
ρ algorithm 48
polymorphism 12, 15, 18
in printing 18
portability 68
positioning a file 50, 51
power
of numerical types 11, 15, 20
of scales (units) 12, 20
power operation 12, 38
precompiling modules 72
preprocessor 68
pretty-printing : see printing
prime
number 48
random 48
prime number
generation 48
printing 51
to a string 50, 53
product of types : see types (product)
profiling 56, 67
promises 18, 57
prompt 64
pseudo-random booleans 40
pseudo-random numbers 36, 40, 48
quantifications 5, 21
choice 6
existential 5, 6
existential imperative 8
imperative choice 8
imperative iteration 8
iteration 6
universal 5
universal imperative 7
quitting 58
quotient 35, 39, 40
random booleans 40
random numbers 36, 40, 48
random primes 48
range of a map 25
range of numbers 24, 29
range restriction 26
reading
from a string 50, 53
reading a line 51
real numbers 37, 40
real part 38
recompilation (last) 57
record 20
records 19, 50
delimiters 12, 19
patterns 19
redundant patterns 21
references 17, 30
regular expression 33
remainder 35, 39, 40
removing an element from a map 29
replay debugger 56
replay file 59
replay-file 79
reversal
of bits 44
reverse execution 56
root 43
square 38, 43
rounding 36, 38
run-time architecture
maximal sharing 2
scales : see units
Scheme 18
seeking 50, 51
selector 18, 19, 20
separate compilation 71
sequencing 6, 22
sets 2, 3, 14, 19, 20, 24
cross-product traversal 4
defined by comprehension 3, 4, 21, 28
defined by enumeration 3
defined by imperative comprehension 6
map type constructor 3
need for 2
parallel traversal 4
patterns 4, 9
set type constructor 3
typing 10
side-effects
in imperative comprehensions 6
in iterations 6
sign of a number 36
sine 39
size : see length
SML-NJ : see Standard ML of New Jersey
space leak 58
specification 2
splitting 9, 27
square root 38, 43
squaring 35, 38
stack 21, 56
standard error 51
standard input 52, 61
Standard ML 2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 30, 56, 58
Standard ML of New Jersey 2, 13, 15, 17, 23, 30, 56, 76
standard output 51
starting a session 59
starting time 57
stepping 65
streams
input 50
output 50
strength
of a type expression 15, 16, 18, 19
of a type variable 11, 15
strings 16, 31
structures 56
submaps 25
subsets 25
substring 32, 33
subtraction 35, 37
suggestions 79
symmetric difference 27, 45
syntax 2
system order 4, 5, 10, 27
tail of a list 23
tangent 39
telling 51
text editor : see editor
thread 57
cache 60
time 57
toplevel 11, 12, 14, 51, 55, 58, 59, 61, 62, 79
continuation 58
returning to 58
transcendental functions 12, 38, 39
traversal order : see domain description
trigonometric functions 39
tuples 18, 19, 20
as records 13
patterns 18
type conversions 12
type functions 13
totality 13, 15
type safety
dynamics 18
equality 15
type variables 15, 18
effects 56
equality type variables 15
imperative type variables 19
imperative type variables 15, 18, 56
numerical type variables 11, 12, 15
weak type variables 15, 18, 19, 56
types 15
abstract data types 13, 15, 20
datatypes 20
functions 20
inverse 20
multiplication 11, 15, 20
numerical 11, 12, 13, 15, 16, 20
power 11, 15, 20
product 18
record types 13, 19
sets and maps 10, 20
tuple types 13, 18
typing 12
underwriting 5, 7, 26, 29
union 27, 28, 45
units 2, 11, 37, 57
universal quantification : see quantifications (universal)
Unix 59
updating an array 31
version 56
void type 17
width of the screen 62