summaryrefslogtreecommitdiff
path: root/examples/box-dynamic-module/box-mixed.scm
diff options
context:
space:
mode:
Diffstat (limited to 'examples/box-dynamic-module/box-mixed.scm')
-rw-r--r--examples/box-dynamic-module/box-mixed.scm44
1 files changed, 44 insertions, 0 deletions
diff --git a/examples/box-dynamic-module/box-mixed.scm b/examples/box-dynamic-module/box-mixed.scm
new file mode 100644
index 000000000..9e6135291
--- /dev/null
+++ b/examples/box-dynamic-module/box-mixed.scm
@@ -0,0 +1,44 @@
+;;; examples/box-dynamic-module/box-mixed.scm -- Scheme module using some
+;;; functionality from the shared library libbox-module, but do not
+;;; export procedures from the module.
+
+;;; Commentary:
+
+;;; This is the Scheme module box-mixed. It uses some functionality
+;;; from the shared library libbox-module, but does not export it.
+
+;;; Code:
+
+;;; Author: Thomas Wawrzinek
+;;; Date: 2001-06-08
+;;; Changed: 2001-06-14 by martin, some commenting, cleanup and integration.
+
+(define-module (box-mixed))
+
+;; First, load the library.
+;;
+(load-extension "libbox-module" "scm_init_box")
+
+;; Create a list of boxes, each containing one element from ARGS.
+;;
+(define (make-box-list . args)
+ (map (lambda (el)
+ (let ((b (make-box)))
+ (box-set! b el) b))
+ args))
+
+;; Map the procedure FUNC over all elements of LST, which must be a
+;; list of boxes. The result is a list of freshly allocated boxes,
+;; each containing the result of an application of FUNC.
+(define (box-map func lst)
+ (map (lambda (el)
+ (let ((b (make-box)))
+ (box-set! b (func (box-ref el)))
+ b))
+ lst))
+
+;; Export the procedures, so that they can be used by others.
+;;
+(export make-box-list box-map)
+
+;;; End of file.