On 2014-06-06 13:31:17 -0400, Matthias Felleisen wrote: > I think we can get them in this sense: > > > > (arity-includes? (procedure-arity (case-lambda [(x) x][(x y) x][(x y z) > > > x])) 1) > > #t > > > (arity-includes? (procedure-arity (case-lambda [(x) x][(x y) x][(x y z) > > > x])) 3) > > #t > > > (arity-includes? (procedure-arity (case-lambda [(x) x][(x y) x][(x y z) > > > x])) 4) > > #f > > but I agree that it is of questionable value. -- Matthias
I'm not sure this predicate, if implemented, can return useful results. To make this more concrete, consider the following interaction: -> (require racket/date) -> (define base-class% (class object% (super-new) (init x y z))) -> (define weird-class% (class base-class% (if (= (date-week-day (current-date)) 5) (super-new) (super-new [x 1])))) Today (since it's Friday), the `weird-class%` class will take three init arguments. If you try this tomorrow, it should take two init arguments. Even worse, the class could change the number of init arguments it takes based on the parity of the millisecond field, a random coin-flip, or by doing face recognition with your webcam. It might be that the arity actually will have changed from the time of the predicate call to the actual use of the constructor. Cheers, Asumu ____________________ Racket Users list: http://lists.racket-lang.org/users