In this case, you're right, but TH does syntactic transformations just like lisp macros, and there's no guarantee that TH's transformations are type-preserving. If there were, then you'd _really_ be in static land. But the reason that lisp macros are simple is because lisp's syntax is simple; the reason TH is complicated is because Haskell's syntax is (comparatively) complicated. If you gave lisp a polymorphic lambda calculus type system, I'm pretty sure macros would carry over almost unscathed. That is, if there weren't a whole culture of lisp idioms that are not well-typed.
I certainly agree, though, that there is no answer to whether static or dynamic typing is better. Or no, I should revise that statement. I agree that currently there is no answer. But I believe in the future static could be better; never dynamic. If someone invents a type system which can support almost all dynamic idioms, still catch errors, and perform inference, then I will leave all my dynamics behind. From my experience with studying type systems, this is highly unlikely :-)
I don't know about that
I certainly agree, though, that there is no answer to whether static or dynamic typing is better. Or no, I should revise that statement. I agree that currently there is no answer. But I believe in the future static could be better; never dynamic. If someone invents a type system which can support almost all dynamic idioms, still catch errors, and perform inference, then I will leave all my dynamics behind. From my experience with studying type systems, this is highly unlikely :-)
-Luke (http://luqui.org/blog)