質問から関数をパラメータとして elisp に渡すにはどうすればよいですか? 関数をパラメーターとして関数に渡す方法を知っています。しかし、 もっと深く掘り下げる必要があります...
不自由な映画の引用はさておき、関数をパラメーターとして取り、[パラメーターとして取った関数を再び渡す] 自分自身を呼び出すことができる関数が必要です。次のスニペットを検討してください。
(defun dummy ()
(message "Dummy"))
(defun func1 (func)
(funcall func))
(defun func2 (func arg)
(message "arg = %s" arg)
(funcall func)
(func2 'func (- arg 1)))
を呼び出す(func1 'dummy)
と、期待される出力が得られます。
Dummy
"Dummy"
呼び出す(func2 'dummy 4)
と、次のエラー メッセージが表示されます。
arg = 4
Dummy
arg = 3
funcall: Symbol's function definition is void: func
ダミーへの 4 回の呼び出しを予期していましたが、2 回目の反復でfunc2
は、最初の反復に渡された (そしてそこから渡された) 関数の知識が失われたようです。どんな助けでも大歓迎です!