在球拍中包含外部文件

时间:2011-01-26 20:05:30

标签: include scheme racket

我想包含给定球拍文件中定义的所有函数,以便获得与复制时相同的效果。有可能吗?

3 个答案:

答案 0 :(得分:17)

要从模块导出功能,请使用provide,考虑文件"foo.rkt"

#lang racket
(define fortytwo 42)
(define (det a b c)
  (- (* b b) (* 4 a c)))
(provide (fortytwo det))

文件"bar.rkt"现在可以从"foo.rkt"导入定义:

#lang racket
(require "foo.rkt")
(define (baz a b c)
  (+ (det a b c) (- c 4)))

允许其他文件访问文件中定义的所有内容的另一种方法是使用(all-defined-out)

#lang racket
(define fortytwo 42)
(define (det a b c)
  (- (* b b) (* 4 a c)))
(provide (all-defined-out))

希望有所帮助。

答案 1 :(得分:13)

您可以按如下方式使用include

创建一个名为"foo.rkt"的文件,如下所示:

(define x 1)
(define y 2)

然后在另一个文件中:

#lang racket
(require racket/include)
(include "foo.rkt")
(+ x y)

您应该看到结果3

您也可以查看include的文档。

答案 2 :(得分:0)

您可以使用加载

(load "assert.scm")