X-Git-Url: http://christophe.rhodes.io/gitweb/?p=paper-els-specializers.git;a=blobdiff_plain;f=els-specializers.org;h=d9b66cf7c23e3d83e68274bf46a2a631e33fba54;hp=6af13922e89061170f1e4e46ca20a85379664924;hb=5773631f063cdbe16e0880ce21c73cb0b911789c;hpb=528a37d55e475944ecbe497c3ea16f8b569abbbb diff --git a/els-specializers.org b/els-specializers.org index 6af1392..d9b66cf 100644 --- a/els-specializers.org +++ b/els-specializers.org @@ -48,6 +48,10 @@ Paepke; AMOP?]. XXX include typical examples of MOP: object persistence; maybe ref. Kizcales "MOPs: why we want them and what else they can do"? (Fig. 2 in that is good) ORMs; sparse slots. + jmoringe: + + introspection, e.g. documentation generation + + programmatic construction of classes and generic functions + e.g. for IDL compilers, model transformations One area of functionality where there is scope for customization by the metaprogrammer is in the mechanics and semantics of method @@ -59,6 +63,8 @@ practice implementation support for this was weak until relatively recently (ref. closer, also check how ContextL and filtered dispatch are implemented). + jmoringe: filtered dispatch uses a custom method combination, i + think Another potential mechanism for customizing dispatch is implicit in the class structure defined by AMOP: standard specializer objects @@ -78,7 +84,12 @@ (ahem) the return value of =class-of=, and allows the metaprogrammer to hook into cacheing schemes to avoid needless recomputation of effective methods for sufficiently similar generic function - arguments. + arguments (See Figure\nbsp\ref{fig:dispatch}). + + #+CAPTION: Dispatch Comparison + #+LABEL: fig:dispatch + #+ATTR_LATEX: width=0.9\linewidth float + [[file:figures/dispatch-comparison.pdf]] The remaining sections in this paper can be read in any order. We give some motivating examples in section XX, including @@ -127,7 +138,7 @@ (defmethod specializer-accepts-p ((s cons-specializer) o) (and (consp o) (eql (car o) (%car s)))) -#| less interesting methods elided |# +#| less interesting methods elided: jmoringe: (un)parsing, specializer + + ))) + `(list ,@(mapcar #'make-parse-form specializer-names))) + #+end_src + for each generic function class. + #+end_quote - [ ] =make-method-lambda= revision (use environment arg?) + + jmoringe: would only be relevant for pattern dispatch, right? I + think, we didn't finish the discussion regarding special + variables vs. environment vs. new protocol function * Related Work - [ ] Newton/Rhodes - [ ] filtered dispatch