So you have used Maple as a glorified calculator (Maple 101), then wrote a few 1 liners (Maple 201), and even a few larger procedures (Maple 301), where you were both amazed and horrified by 'op'. But when you get serious about programming in Maple, even for not-so-large procedures, what are the fundamental parts of the system that you should know? Other pages in this book talk about particular features. This one is instead a simple list of those Maple commands and concepts you need to know to be able to call yourself a Master Maple Programmer.
Concepts you need to understand:
- structured types (see ?type,structured)
- DAGs versus trees
- hash tables
- expression sequences (and why they are both useful and dangerous)
- rtables and indexing functions
- evaluation rules (one level, last-name-eval, special rules)
- higher-order functions
- lexical scoping
- environment variables (known as fluid variables in LISP)
- argument processing
- attributes
- why you should never use 'whattype'
- why you should be wary of 'with'
- why 'has' and 'hastype' can kill efficiency
- options Cache, remember, system, builtin, inline, etc
- what all the quotes mean
- the difference between evaluation and automatic simplification
Commands you need to know:
- indets
- map, zip and seq
- member, select, remove, selectremove
- `if`
- unapply
- the 'in' operator
- 2-argument eval
- procname, args, nargs, and their friends
- frontend, freeze, thaw
- maptype
- depends
- use, uses and bind
- kernelopts and interface
- typematch
- subsop
- unames, anames
- LibraryTools, march
- $define, $include, $ifdef and other pre-processor macros
- system, ssystem, process
- evalindets and subsindets
- ToInert and FromInert
- call_external
- dismantle, disassemble, pointto, addressof