質問

実行時に、関数がある入力(引数、パラメーター)の数を知る方法はありますか?

言いたい:

(define (my-function unknown-function)
  ...
  (number-of-necessary-arguments unknown-function)
  ...)
役に立ちましたか?

解決

使用できます procedure-arity.

(procedure-arity expt)                     ; => 2

使用するときに注意してください procedure-arity Variadic関数を備えています 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))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top