I would like to include all the functions defined in a given racket file so that I get the same effect as if they were copied. Is it possible to do that?
Asked
Active
Viewed 1.0k times
3 Answers
26
To export the functions out of a module, you use provide
, consider a file "foo.rkt"
:
#lang racket
(define fortytwo 42)
(define (det a b c)
(- (* b b) (* 4 a c)))
(provide (fortytwo det))
The file "bar.rkt"
now can import definitions from "foo.rkt"
:
#lang racket
(require "foo.rkt")
(define (baz a b c)
(+ (det a b c) (- c 4)))
The other way you could allow other files to have access to everything that’s defined in the file, is using (all-defined-out)
:
#lang racket
(define fortytwo 42)
(define (det a b c)
(- (* b b) (* 4 a c)))
(provide (all-defined-out))
Hope that helps.

Eli Barzilay
- 29,301
- 3
- 67
- 110

YasirA
- 9,531
- 2
- 40
- 61
-
1Note also that there is `include`, which might be what the question was originally about. – Eli Barzilay Jan 27 '11 at 03:34
-
somehow include didn't work in my case, but your solution did the job. – dKab Nov 22 '14 at 18:55
-
1I believe the right syntax to export those two functions fortytwo and det is `(provide fortytwo det)`. – André Herculano Dec 17 '16 at 16:11
18
You can use include
as follows:
Create a file called "foo.rkt"
that looks like this:
(define x 1)
(define y 2)
Then in another file:
#lang racket
(require racket/include)
(include "foo.rkt")
(+ x y)
You should see the result 3
.
You can see the documentation for include
as well.

Sam Tobin-Hochstadt
- 4,983
- 1
- 21
- 43
-
Sam, please read [Racket language questions tagging: tags "plt-scheme" and "racket"](http://meta.stackexchange.com/q/74042/147036). – YasirA Feb 08 '11 at 19:08
-
1Sorry to awaken an old thread, but why is there no #lang racket in foo.rkt? – ivan-k Aug 28 '14 at 05:56
-
6@Manbroski there is no `#lang` because `foo.rkt` isn't a module, it's just some definitions. `#lang` creates a module. If we did that, we'd be trying to include a module inside our module, which isn't what we want. – Sam Tobin-Hochstadt Sep 03 '14 at 22:27