2011-01-26 2 views

ответ

12

Вы можете использовать include следующим образом:

Создайте файл с именем "foo.rkt" который выглядит следующим образом:

(define x 1) 
(define y 2) 

Затем в другом файле:

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

Вы должны увидеть результат 3 ,

Вы также можете ознакомиться с документацией для include.

+0

Сэм, пожалуйста, прочитайте [теги вопросов по языку ракетки: теги «plt-scheme» и «racket»] (http://meta.stackexchange.com/q/74042/147036). –

+0

К сожалению, у меня недостаточно голосов, чтобы проголосовать за синонимы. –

+0

Извините, что пробудил старую нить, но почему в foo.rkt нет ракеты #lang? – Manbroski

12

Чтобы экспортировать функции из модуля, можно использовать 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

Заметим также, что есть 'include', который мог бы быть тем, что вопрос изначально был о. –

+0

как-то включительно не работал в моем случае, но ваше решение выполнило эту работу. – dKab

+0

Я считаю, что правильный синтаксис для экспорта этих двух функций сорок два, а det - '(предоставить сорок два)'. –

0

Вы можете использовать багажники

(load "assert.scm") 
Смежные вопросы