Lisp: Macros vs Functions
===

In my quest to fully understand the so powerful lisp macros a question came to my mind. I know that a golden rule about macros is the one saying _"Never use a macro when a function will do the work"_.
However reading Chapter 9 - [Practical: Building a Unit Test Framework](http://www.gigamonkeys.com/book/practical-building-a-unit-test-framework.html) - from the book Practical Common Lisp I was introduced to the below macro whose purpose was to get rid of the duplication of the test case expression, with its attendant risk of mislabeling of results.  

    ;; Function defintion. 

    defun report-result (result form)
      (format t "~:[FAIL~;pass~] ... ~a~%" result form))
      
    ;; Macro Definition
    
    (defmacro check (form)
      `(report-result ,form ',form))

OK, I understand its purpose but I could have done it using a function instead of a macro, for instance:

    (setf unevaluated.form '(= 2 (+ 2 3)))
    
    (defun my-func(unevaluated.form)
    	   (report-result (eval unevaluated.form) unevaluated.form))

1. Is this only possible because the given macro is too simple ?
2. Furthermore, is Lisp Macro System so powerful relatively its opponents due to the code itself - like control structures, functions, etc - is represented as a LIST ? 
    