[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: FLAVORS -> CLOS



> My question is, what advice can you give us about moving code from
> FLAVORS (on Symbolics, Explorer, and Sun/Lucid) to CLOS?  What are the
> "gotchas" we need to look out for?  What are the neat tricks to
> converting?  What's the appropriate implemenation "style" to maintain?

There is a utility shipped with Explorer release 6.0 that can help with
conversion by converting DEFFLAVOR, DEFMETHOD, SEND, etc. into their CLOS
equivalents.  See file "SYS:PUBLIC.Z-TO-C-TRANSLATOR;-READ-ME-.TEXT" for
information.

Some of the problems I have encountered that require manual recoding after
the mechanical translation are:

 * Use of special variable SELF outside a method.

 * Methods with argument lists that CLOS does not consider congruent.
   With Flavors, it is common for before or after methods to use &REST
   IGNORE to disregard irrelevant arguments, but CLOS requires enumerating
   the arguments the same on every method.

 * Use of the same message name with different arguments lists for
   different flavors.

 * Use of operations :WHICH-OPERATIONS, :OPERATION-HANDLED-P, and
   :SEND-IF-HANDLES, which don't have a direct correspondence in CLOS.
   These require some redesign of the program, typically by defining a
   default method to do whatever you want to do if the operation isn't
   handled.