diff --git a/scheme/ikarus.apropos.ss b/scheme/ikarus.apropos.ss index 8fa79ff..b8ba488 100644 --- a/scheme/ikarus.apropos.ss +++ b/scheme/ikarus.apropos.ss @@ -28,28 +28,30 @@ [(symbol? name) (symbol->string name)] [else (die who "not a string or symbol" name)])]) - (let ([libs (installed-libraries)] - [matcher - (compose (match-maker name) - (compose symbol->string car))]) - (fold-right - (lambda (lib rest) - (let ([ls (filter matcher (library-subst lib))]) - (if (null? ls) - rest - (cons (cons (library-name lib) (map car ls)) rest)))) - '() - (list-sort - (lambda (lib1 lib2) - (let f ([ls1 (library-name lib1)] [ls2 (library-name lib2)]) - (and (pair? ls2) - (or (null? ls1) - (let ([s1 (symbol->string (car ls1))] - [s2 (symbol->string (car ls2))]) - (or (stringstring car))) + (fold-right + (lambda (lib rest) + (define (symbolstring s1) (symbol->string s2))) + (let ([ls (filter matcher (library-subst lib))]) + (if (null? ls) + rest + (let ([ls (list-sort symbolstring (car ls1))] + [s2 (symbol->string (car ls2))]) + (or (string