【问题标题】:Chicken Scheme: Does module procedures only use procedures internal to the module?鸡计划:模块过程是否只使用模块内部的过程?
【发布时间】:2015-02-22 02:00:38
【问题描述】:

假设我有以下两个模块:

(module mod1 (func2)
  (define (func1) ...)
  (define (func2) ... (func1) ...))

(module mod2 ()
  (import (only mod1 func2))
  (define (func1) ...)
  (define (func3) ... (func2) ...))

func3 中调用func2 是使用mod2func1 版本还是mod1 的版本?

【问题讨论】:

  • 为什么不试试看会发生什么?
  • 我刚做了。它运行mod1 的版本。有没有办法让它运行mod2的版本?

标签: module scheme chicken-scheme


【解决方案1】:

做到这一点的最好方法是以某种方式将func1 传递给func2。作为参数,或通过mod1 导出的SRFI-39 参数:

(module mod1 (func2)
  (define (func1) ...)
  (define the-func (make-parameter func1)) ; defaults to our version
  (define (func2) ... (let ((func1 (the-func)) (func1)) ...))

(module mod2 ()
  (import (only mod1 func2))
  (define (func1) ...)
  (define (func3) ... (parameterize ((the-func func1)) (func2)) ...))

【讨论】:

    猜你喜欢
    • 2017-12-29
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2020-09-17
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    相关资源
    最近更新 更多