Я хотел бы включить все функции, определенные в данном файле ракетки, чтобы я получал такой же эффект, как если бы они были скопированы. Возможно ли это сделать?
Включение внешнего файла в ракетку
Ответ 1
Вы можете использовать include
следующим образом:
Создайте файл с именем "foo.rkt"
, который выглядит так:
(define x 1)
(define y 2)
Затем в другом файле:
#lang racket
(require racket/include)
(include "foo.rkt")
(+ x y)
Вы должны увидеть результат 3
.
Вы можете увидеть документацию для include
.
Ответ 2
Чтобы экспортировать функции из модуля, вы используете 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))
Надеюсь, что это поможет.
Ответ 3
Вы можете использовать load
(load "assert.scm")