25 lines
600 B
Scheme
25 lines
600 B
Scheme
#lang scheme
|
|
|
|
(require htdp/matrix-sig
|
|
htdp/matrix-render-sig
|
|
htdp/matrix-unit)
|
|
|
|
(define render@
|
|
(unit (import)
|
|
(export matrix-render^)
|
|
(define-struct invisible (matrix))
|
|
(define visible? invisible?)
|
|
(define make-visible make-invisible)
|
|
(define visible-matrix invisible-matrix)))
|
|
|
|
(define invisible-matrix@
|
|
(compound-unit
|
|
(import)
|
|
(export m)
|
|
(link (((r : matrix-render^)) render@)
|
|
(((m : matrix^)) matrix@ r))))
|
|
|
|
(define-values/invoke-unit invisible-matrix@ (import) (export matrix^))
|
|
|
|
(provide-signature-elements matrix^)
|