Common Lisp 中函数的作用域

Scope of a function in Common Lisp

假设我必须定义一个名为 foo 的函数。假设为了定义它,我使用了一些辅助函数foo1foo2foo3、...

当我加载包含这些功能的文件时,我可以从顶层使用所有这些功能。相反,我只想从顶层 "see" 函数 foo 和 "hide" 其他函数。我怎样才能达到这个结果?

您可以使用 flet.

例如,

(flet ((foo1 (...) ...)
       (foo2 (...) ...)
       (foo3 (...) ...))
  (defun foo (...) 
    (foo1 (foo2 (foo3 ...))))
  (defun goo (...)
    (foo2 (foo1 (foo3 ...)))))