Why Lisp macros supposedly don't play well with static types? I.e. what hinders a statically-typed Lisp?
If you want you could do it template haskell style. macros are just functions AST -> AST. There's no way to ensure that expanded code will be well typed though.
If we want that then it gets difficult: think about a standard type system. Just looking at a piece of code you can statically infer or validate a type (without running the code).
so for a typed macro system we would want the same property.
* (A) A piece of code that involves macro uses would be able to be statically checked, therefore we need to be able to look up the macro name and what resulting type it'll have based on its input types.
* (B) macro definitions need to be checked over and assigned a type transformation rule
(B) is the hard part. If you annotate the macro definitions with types I don't see why it couldn't be done though.