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