====================================== Motivation ====================================== * reuse of tools, models, system, code both "up" and "down": can be built upon and extended, or built "under" and applied as an extension to other existing systems * seperation/abstraction of model, methods, and types from implementation, allows for metaprogramming, compilation, symbolic analysis, potential for proofs * conceptual simplicity/purity of a reference implementation allows it to serve as a blueprint or recipe for similar systems or reimplementation * open source allows the entire heirarchy, tool chain, and implementation to be explored, shared, extended, abused * unambiguous notation and syntax checking * educational exploration * same tools for theoretical development (symbolic, checking, searches) and efficient numerical computation (compilation, parallelizing combinators, evaluation flow control, optimization)