2011-09-08 13 views
6

実行時に関数にいくつの入力(引数、パラメータ)があるかを知る方法はありますか?関数が持つ入力の数を動的に調べる

(define (my-function unknown-function) 
    ... 
    (number-of-necessary-arguments unknown-function) 
    ...) 
+0

は、あなたが実際に「適用」を必要としませんか? – paul

答えて

11

あなたはprocedure-arityを使用することができます。

言ってやるが、私はしたいと思います。

(procedure-arity expt)      ; => 2 

注可変長引数の関数やcase-lambda等でprocedure-arityを使用した場合、結果はより複雑であること:

(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)) 
関連する問題