diff options
Diffstat (limited to 'geiser')
| -rw-r--r-- | geiser/doc.scm | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/geiser/doc.scm b/geiser/doc.scm index f5471b5..902f2a3 100644 --- a/geiser/doc.scm +++ b/geiser/doc.scm @@ -66,16 +66,17 @@          (else 'variable)))  (define (arguments proc) -  (define (p-arguments prog) -    (map (lambda (a) ((@@ (system vm program) arity->arguments-alist) prog a)) -         (or (program-arities prog) '()))) +  (define (p-args prog) +    (let ((as (map (lambda (a) +                     ((@@ (system vm program) arity->arguments-alist) prog a)) +                     (or (program-arities prog) '())))) +      (and (not (null? as)) as)))    (define (clist f) (lambda (x) (let ((y (f x))) (and y (list y)))))    (cond ((is-a? proc <generic>) (generic-args proc)) +        ((doc->args proc) => list)          ((procedure-property proc 'arglist) => (clist arglist->args))          ((procedure-source proc) => (clist source->args)) -        ((doc->args proc) => list) -        ((program? proc) (let ((a (p-arguments proc))) -                           (and (not (null? a)) a))) +        ((and (program? proc) (p-args proc)))          ((procedure-property proc 'arity) => (clist arity->args))          (else #f))) | 
