RodPValley
RodPValley

Reputation: 29

Is it possible to use rackunit in DrRacket with language set to sicp, and if so, how?

I'm starting to work through SICP using DrRacket. I installed the sicp package, and declared #lang sicp at the top of the unit test file and then (require rackunit "xxx.scm"), but I get an unbound identifier error. Is there a mistake, or is it not possible to use rackunit with the sicp package in this way?

Upvotes: 2

Views: 165

Answers (1)

Sylwester
Sylwester

Reputation: 48745

You need to use #%require.

#%require is actually a primitive type in the lowest level of racket and it is slightly different than require:

#lang sicp
(#%require rackunit "xxx.scm")

The file you want to test becomes a module so you can use it from other code by providing the identifiers you want to expose:

(#%provide procedure-name)

You can also just require a few needed forms. eg. error and time from racket/base:

(#%require (only racket/base error time))

A hint on finding out where they are is to search the online manuals or from Help > Racket documentation in DrRacket. Eg. here is an example of searching error where you have many choices, but the racket prefixed ones are the ones you're looking for.

NB: Not all forms are compatible across languages. Eg. R5RS has different pair implementation than #lang racket

Upvotes: 3

Related Questions