Easy-to-use DSL
(parameterize some-package
(p1 p2 p3g* (p4g v1)^ ...)
(if p1 exp)
(cond (p5g exp2)
((p2 v2) exp3)))
Majority of the users will want to modify existing packages
If a user wants to make a new package, just put the package at some-package
No need to specify parameter types.
They will be inferred through the package's code
Bangs (!) must be used for negation.
if
and cond
treated as parameter/if
and parameter/cond
parameter/match also accessible through match
global parameters automatically found
all local parameters are specified in the list after the package name
Morphisms only used for global parameters
^ symbol used to indicate "use morphism"
* not necessary if ^ is used
if is a cons cell, cdr value is assumed to be activation value
Design Considerations: