Concerning macros, here is a page which talk about it : Hello Haskell, Goodbye Lisp. It explains a point of view where macros are just not needed in Haskell. It comes with a short example for comparison.
Example case where a LISP macro is required to avoid evaluation of both arguments :
(defmacro doif (x y) `(if ,x ,y))
Example case where Haskell does not systematically evaluates both argument, without the need of anything like a macro definition :
doif x y = if x then (Just y) else Nothing
And voilà