沒有對flet
因爲有let*
爲let
,我可以在Emacs中找到口齒不清的flet*
- 所以任何這四種備選方案的更地道,用於通過flet
定義一個函數定義一個函數多次使用?在這個例子中,add1
是我想在add1twice
內重複使用的功能,但不在其外部使用。flet相當於let *?
選項1
(defun add2 (x)
(flet ((add1 (x) (1+ x)))
(flet ((add1twice (x)
(add1 (add1 x))))
(add1twice x))))
選項2
(defun add2 (x)
(flet ((add1twice (x)
(flet ((add1 (x) (1+ x)))
(add1 (add1 x)))))
(add1twice x)))
選項3
(defun add2 (x)
(flet ((add1twice (x)
(let (add1)
(fset 'add1 (lambda (x) (1+ x)))
(add1 (add1 x)))))
(add1twice x)))
選項4
(labels ((add1 (x) (1+ x)))
(defun add2 (x)
(flet ((add1twice (x)
(add1 (add1 x))))
(add1twice x))))
(所有這些都產生相同的結果)
OOPS!猜猜我應該先嚐試一下。 :) – hatmatrix