[Scheme-reports] Can a library keep state?
Jeronimo Pellegrini 02 Jan 2012 11:29 UTC
Hello,
The report mentions that
"In a library declaration, it is an error to import
the same identifier more than once with different bindings,
or to redefine or mutate an imported binding with define,
define-syntax or set!."
So a library cannot, for example, export a variable that
is supposed to be mutated by the user. But can it export
a getter and a setter?
(define-library (foo bar)
(import (scheme base))
(export get-x set-x!)
(begin
(define x 0)
(define (get-x) x)
(define (set-x! z) (set! x z))))
> (import (foo bar))
> x
ERROR: undefined variable: x
> (get-x)
0
> (set-x! 10)
> (get-x)
10
This works in Chibi (and I'd use this a lot!) -- but it's
not explicitly allowed by the standard, so I'm checking.
Is this the intended semantics? (If it is, I'm happy!)
Thanks,
J.
_______________________________________________
Scheme-reports mailing list
Scheme-reports@scheme-reports.org
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports