mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-09 15:10:29 +02:00
define* in resolve-interface
* module/ice-9/boot-9.scm (resolve-interface): Use define* with proper keyword arguments, for great justice.
This commit is contained in:
parent
6b7d701e73
commit
36d58fc31e
1 changed files with 9 additions and 19 deletions
|
@ -2469,25 +2469,15 @@ If there is no handler at all, Guile prints an error and then exits."
|
||||||
;; or its public interface is not available. Signal "no binding"
|
;; or its public interface is not available. Signal "no binding"
|
||||||
;; error if selected binding does not exist in the used module.
|
;; error if selected binding does not exist in the used module.
|
||||||
;;
|
;;
|
||||||
(define (resolve-interface name . args)
|
(define* (resolve-interface name #:key
|
||||||
|
(select #f)
|
||||||
(define (get-keyword-arg args kw def)
|
(hide '())
|
||||||
(cond ((memq kw args)
|
(prefix #f)
|
||||||
=> (lambda (kw-arg)
|
(renamer (if prefix
|
||||||
(if (null? (cdr kw-arg))
|
(symbol-prefix-proc prefix)
|
||||||
(error "keyword without value: " kw))
|
identity))
|
||||||
(cadr kw-arg)))
|
version)
|
||||||
(else
|
(let* ((module (resolve-module name #t version))
|
||||||
def)))
|
|
||||||
|
|
||||||
(let* ((select (get-keyword-arg args #:select #f))
|
|
||||||
(hide (get-keyword-arg args #:hide '()))
|
|
||||||
(renamer (or (get-keyword-arg args #:renamer #f)
|
|
||||||
(let ((prefix (get-keyword-arg args #:prefix #f)))
|
|
||||||
(and prefix (symbol-prefix-proc prefix)))
|
|
||||||
identity))
|
|
||||||
(version (get-keyword-arg args #:version #f))
|
|
||||||
(module (resolve-module name #t version))
|
|
||||||
(public-i (and module (module-public-interface module))))
|
(public-i (and module (module-public-interface module))))
|
||||||
(and (or (not module) (not public-i))
|
(and (or (not module) (not public-i))
|
||||||
(error "no code for module" name))
|
(error "no code for module" name))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue