首页

2010年5月29日星期六

Scheme/Lisp 命名空间和模块另一种写法。

;;file 其实就是后面的foo.ss这个模块,但是必须先写这个,这个文件就是写一个合同

(define s (module->namespace "file")
      (module m scheme
           (define foo (lambda(n) (* n n n)))
           (define bar 100)
           (provide foo bar))

;;加载进来对foo bar 求值。

(require 'm)
(define ns (module->name ''m))
(eval '(foo bar) ns)
(parameterize ((current->namespace (module->namespace "foo.ss")))
    (eval '(foo bar) '(current->namespace)))

(parameterize ((current-output-port (open-output-file "foo.ss")))
    (write 'hello)(close-output-port (currten-output-port))   ;;利用命名空间函数向文件写入。

没有评论:

发表评论