関数が実行時にいくつの入力(引数、パラメーター)を持っているかを知る方法はありますか?
言う、私はしたい:
(define (my-function unknown-function)
...
(number-of-necessary-arguments unknown-function)
...)
を使用できますprocedure-arity
。
(procedure-arity expt) ; => 2
procedure-arity
可変個引数関数などで使用する場合case-lambda
、結果はより複雑になることに注意してください。
(procedure-arity apply) ; => (arity-at-least 2)
(procedure-arity (case-lambda
((x) x)
((x y z) z)
((a b c d e f . g) g))) ; => `(1 3 ,(arity-at-least 6))