Pregunta

Estoy usando DrScheme para trabajar a través del SICP, y he notado que ciertos procedimientos (por ejemplo, square ) se usan una y otra vez. Me gustaría colocarlos en un archivo separado para poder incluirlos en otros programas sin tener que volver a escribirlos cada vez, pero parece que no puedo encontrar la forma de hacerlo.

Lo he intentado:

(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)

Ninguna de estas obras. Obviamente me estoy agarrando a los popotes, cualquier ayuda es muy apreciada.

¿Fue útil?

Solución

De su pregunta no queda claro qué nivel de idioma está utilizando; ciertos lenguajes heredados pueden hacer que ciertos mecanismos no estén disponibles.

El mejor mecanismo de inclusión / abstracción es el de los módulos.

Primero, establezca su nivel de idioma en " módulo " ;. Luego, si tengo estos dos archivos en el mismo directorio:

Usos del archivo-square.ss:

#lang scheme

(require "square.ss")

(define (super-duper x) (square (square x)))

Archivo square.ss:

#lang scheme

(provide square)

(define (square x) (* x x))

Entonces puedo presionar " ejecutar " en el " usos-cuadrados.ss " búfer y todo funcionará de la manera que esperas.

Advertencia: código no probado

Otros consejos

Creo que estás buscando:

(include "relative/path/to/scheme/file.scm")

La expresión (requerida) es para cargar módulos.

En el Esquema MIT / GNU, puedes cargar un archivo con algo como esto:

(load "c:\\sample-directory\\sample-file.scm")

Pero no sé si funciona en DrScheme.

(require "~/path-to-directory/filename")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top