mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-08 22:50:27 +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"
|
||||
;; error if selected binding does not exist in the used module.
|
||||
;;
|
||||
(define (resolve-interface name . args)
|
||||
|
||||
(define (get-keyword-arg args kw def)
|
||||
(cond ((memq kw args)
|
||||
=> (lambda (kw-arg)
|
||||
(if (null? (cdr kw-arg))
|
||||
(error "keyword without value: " kw))
|
||||
(cadr kw-arg)))
|
||||
(else
|
||||
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))
|
||||
(define* (resolve-interface name #:key
|
||||
(select #f)
|
||||
(hide '())
|
||||
(prefix #f)
|
||||
(renamer (if prefix
|
||||
(symbol-prefix-proc prefix)
|
||||
identity))
|
||||
version)
|
||||
(let* ((module (resolve-module name #t version))
|
||||
(public-i (and module (module-public-interface module))))
|
||||
(and (or (not module) (not public-i))
|
||||
(error "no code for module" name))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue