labelsでエラーがでるのですが理由がわからいので教えてください。

scratchで以下の式を評価すると正常に動くのですが

(defun foo ()
(labels (
(bar ()
(print "foo test")
)
)
(bar)
)
)

(foo)
で "foo test"が表示される

これをこのまま
.emacsファイルに記述するとbacktraceになってしまいます。
↓メッセージ
Debugger entered--Lisp error: (void-function labels)
(labels ((bar nil ...)) (bar))
foo()

これはなぜでしょうか。またどのように解決したらよいでしょうか?