Включение внешнего файла в ракетку - PullRequest
15 голосов
/ 26 января 2011

Я хотел бы включить все функции, определенные в данном файле ракетки, чтобы получить тот же эффект, как если бы они были скопированы. Возможно ли это сделать?

Ответы [ 3 ]

17 голосов
/ 27 января 2011

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

Надеюсь, что это поможет.

13 голосов
/ 08 февраля 2011

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

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

(define x 1)
(define y 2)

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

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

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

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

0 голосов
/ 19 февраля 2018

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

(load "assert.scm")
...