mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 20:00:19 +02:00
52 lines
1.2 KiB
Scheme
52 lines
1.2 KiB
Scheme
#! /usr/local/bin/guile -s
|
|
!#
|
|
;;; examples/modules/main -- Module system demo.
|
|
|
|
;;; Commentary:
|
|
|
|
;;; The main demo program for the modules subdirectory.
|
|
;;;
|
|
;;; This program shows how all the new fancy module import features
|
|
;;; are to be used.
|
|
|
|
;;; Author: Martin Grabmueller
|
|
;;; Date: 2001-05-29
|
|
|
|
;;; Code:
|
|
|
|
(define-module (main)
|
|
;; The module 0 is imported completely.
|
|
;;
|
|
:use-module (module-0)
|
|
|
|
;; Module 1 is imported completely, too, but the procedure names are
|
|
;; prefixed with the module name.
|
|
;;
|
|
:use-module ((module-1) :renamer (symbol-prefix-proc 'module-1:))
|
|
|
|
;; From module 2, only the procedure `braz' is imported, so that the
|
|
;; procedures `foo' and `bar' also exported by that module don't
|
|
;; clash with the definitions of module 0.
|
|
;;
|
|
:use-module ((module-2) :select (braz))
|
|
|
|
;; Import the bindings from module 2 again, now renaming them by
|
|
;; explicitly mentioning the original and new names.
|
|
;;
|
|
:use-module ((module-2) :select ((braz . m-2:braz) (foo . m-2:foo))))
|
|
|
|
;;
|
|
;; Now call the various imported procedures.
|
|
;;
|
|
|
|
(foo)
|
|
(bar)
|
|
(module-1:foo)
|
|
(module-1:bar)
|
|
(braz)
|
|
(m-2:braz)
|
|
(m-2:foo)
|
|
|
|
;; Local variables:
|
|
;; mode: scheme
|
|
;; End:
|