[m-dev.] Book topics
Ralph Becket
rafe at cs.mu.OZ.AU
Tue Oct 16 17:27:06 AEST 2001
Feedback welcome...
Topics
Ralph Becket <rafe at cs.mu.oz.au>
Mon Oct 15 13:05:39 EST 2001
vim: ft=txt wm=10
[Draft]
List of topics to conver in the book. I currently envision the book
in two sections: section 1 should be a tutorial sacrificing depth in
order to give a more general feeling for the language; section 2 will
cover each key topic separately and in some depth.
I have put stars beside topics and sub-topics that I believe should be
addressed only in section 2. These topics are listed roughly in the
order I think they should be presented in depth (there will probably
be many forward references and "preliminary glosses" in earlier
chapters.)
Hello, World!
Declarative vs Imperative Programming
Definitions
Benefits of declarative style
Pragmatism
Mercury philosophy
Types
Primitive
Algebraic
Equivalence
Algebraic types with fields
Definition
Access
Update
* Types with user-defined equality
Functions
Definition
Pattern matching
Recursion
Conditional expressions
Overview to semidet predicates
Polymorphism
* Partial (semidet) functions
Infix notation and syntactic sugar in general
Predicates
Definition
Recursion
If-then-else
Disjunction
Switches
Backtracking
IO
Uniqueness
* Determinism restrictions
* DCG notation in detail
Modes
Direction of data flow
Determinism categories
Committed choice
* Subtyping
* Unique modes
Determinism restrictions
Mostly unique modes
Higher order modes
The standard func mode
Standard funcs and the ground inst
Modules
Namespaces
Overloading and name resolution
Submodules
Nested
Separate
Higher Order Programming
Higher order application
Pred and func modes
* Monomorphism restriction
* Type Classes
OO Programming
Type class declarations
Method signatures
Type class constraints
Instance declarations
Method implementations
Type class constraints
Existentially quantified types
Use
Why output only
...Constructor classes
...Functional dependencies
Restrictions and explanations thereof
On type class definitions
On instance definitions
Lists
Description
Map, fold & member
Maps
Arrays
Compiling Programs
Mmake
Compiler flags
Compilation grades
* Stores
* Exceptions
Throwing
Catching
Effect on determinism
Restoring (plain) determinism (promise_only_solution)
* Foreign Language Interface
Declarations
Data types
* Impure code
Levels of purity
Effect of impurity annotations
Promising purity (pragma promise_pure)
* Pragmas
Inlining
Type specialization
Obsolescence
Memoing
...Promises
* Debugging
Compiling for debugging
Basic tour of the debugger
Declarative debugging
* Optimization
When to do it and when to avoid it
Profiling
Various considerations
An overview of contemporary optimizer technology
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list