为什么Racket不能找到我的模块导出?

时间:2014-06-11 22:15:26

标签: module racket lang

我有一个非常简单的模块,只有一个导出,在文件“m.rkt”

#lang racket
(module m racket
  (provide dec)
  (define (dec n)
    (- n 1)))

和使用它的文件“n.rkt”中的其他模块

#lang racket
(module n racket
  (require "m.rkt")
  (define (id x)
    (+ 1 (dec x))))

在REPL,我尝试加载第二个模块

Welcome to Racket v6.0.1.
> (current-load-relative-directory "h:\\tmp")
> (require "n.rkt")
h:\tmp\n.rkt:8:10: dec: unbound identifier in module
  in: dec

似乎找到两个模块表达式就好了,但无法从“m.rkt”解析dec的导出。关于我做错了什么的任何想法?

更新:在两个文件中注释掉#lang racket语言选择语法会使事情正常工作。根据“球拍指南”第6.2节,#lang racket是模块声明的简写,因此我的(module ...)表单声明了子模块。生活和学习......

1 个答案:

答案 0 :(得分:3)

(从更新复制到问题)

在两个文件中注释掉#lang球拍语言选择语法会使事情正常工作。根据“球拍指南”第6.2节,#lang球拍是模块声明的简写,所以我的(模块...)表格是声明子模块。生活和学习......