guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

signatures.scm


From: thi
Subject: signatures.scm
Date: Mon, 22 Oct 2001 02:29:17 -0700

(define (signature-importer-proc module-name signature-name)
  (lambda (sig-alist)
    (let ((syms (assq-ref (module-ref (resolve-module module-name) sig-alist)
                          signature-name)))
      (process-use-modules module-name syms))
    sig-alist))


;;; providing module
(define-module (fun funcs)
  :export (#{(fun funcs) signatures}#))

(define (plus-0 n) (+ n 0))
(define (plus-1 n) (+ n 1))
(define (plus-2 n) (+ n 2))
(define (mult-1 n) (* n 1))
(define (mult-2 n) (* n 2))
(define (mult-3 n) (* n 3))

(define #{(fun funcs) signatures}#
  '((pretty-much-useless        plus-0 mult-1)
    (using-numero-uno           plus-1 mult-1)
    (all                        plus-0 plus-1 plus-2
                                mult-1 mult-2 mult-3)))

;;; client A module
(define-module (client A)
  :use-module ((fun funcs)
               :renamer (signature-importer-proc '(fun funcs)
                                                 'pretty-much-useless)))

;;; client B module
(define-module (client B)
  :use-module ((fun funcs)
               :renamer (signature-importer-proc '(fun funcs)
                                                 'using-numero-uno)))

;;; client C module
(define-module (client C)
  :use-module ((fun funcs)
               :renamer (signature-importer-proc '(fun funcs) 'all)))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]