special-form

can if be a proper function rather than a special form

hello I finally started learning functional languages (emacs lisp) and it makes explicit distinction between functions and special forms such as flow control , for example if. Is there a fundamental/theoretical reason why special forms are distinct from functions? do any languages provide functional if? Thanks ...

Is there a way to get a collection of clojure special forms programatically?

Does something similar to this exist?: (deftest fantasy (is (= ["let" "def" "ns" "etc."] clojure.core/special-chars))) ...