Dylan macro system is badass!
We're not talking C/C++ crapy preprocessors or LISP macros, the Dylan macro facility is a type of BNF translator, able to translate most any syntax or grammar. Behold, I can convert a non-oo looking method definition:
define method move-to (self :: <window>, x, y)Into this:
end;
define-method <window>.move-to(x, y)With this little macro:
end;
define macro define-methodNice!
{ define-method ?class:name . ?name:name (?params:*)
?:body
end } =>
{ define method ?name (?=self :: ?class, ?params)
?body
end }
end;