ラムダ式を利用したクロージャを利用するときの挙動について
SchemeとCommon Lispの挙動を比べた時、クロージャを返す関数を利用するさいの違いについて、よくわからないところがあります。
例えば、Schemeの場合ですと、クロージャを作成する関数を定義し、そのクロージャを評価する場合、下のように書くことが出来ると思います:
(define (closure-test x)
(lambda () (print x)))
((closure-test "Hello, Closure."))
;; => print "Hello, Closure."
そこで、同じようなことが出来ないかと思い、Common Lispでも下のように書いてみたところ、エラーが発生しました(処理系はClozure CLです):
(defun closure-test (x)
(lambda () (format t "~A~%" x)))
((closure-test "Hello, Closure.")) ;; Error
(funcall (closure-test "Hello, Closure."))
;; => print "Hello, Closure"
Schemeの場合はなんとなくわかるのですが、Common Lispについては、なぜこのような挙動になるのでしょうか?