1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 20:00:19 +02:00
guile/examples/box-dynamic-module/box-mixed.scm
Martin Grabmüller 673509f84f * scripts/README, scripts/hello.scm, safe/untrusted.scm,
safe/evil.scm, safe/README, modules/README, modules/main,
	modules/module-0.scm, modules/module-1.scm, modules/module-2.scm:
	Minor cleanup.

	* README: Added intro stuff, restructured a bit.

	* box-dynamic/README, box-module/README, box/README: Cleanup and
	restructuring.

	* box-dynamic-module/box-mixed.scm: New file, demonstrating usage
	of extension library functionality, but without exporting
	procedures from the library.

	Thanks to Thomas Wawrzinek for the idea and example code!

	* box-dynamic-module/box-module.scm: Add comments, export
	make-box, box-ref, box-set!.

	* box-dynamic-module/README: Integrate new module (box-mixed),
	restructure and cleanup a bit.
2001-06-14 20:36:06 +00:00

44 lines
1.2 KiB
Scheme

;;; 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.