Pergunta

Eu estou usando DrScheme de trabalho através SICP, e tenho notado que determinados procedimentos (por exemplo, square) se acostumar mais e mais. Eu gostaria de colocá-las em um arquivo separado para que eu possa incluí-los em outros programas sem ter que reescrevê-los o tempo todo, mas eu não consigo descobrir como fazer isso.

Eu tentei:

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

Nenhuma dessas obras. Obviamente eu estou agarrando em palhas -. Qualquer ajuda é muito apreciada

Foi útil?

Solução

Não é claro da sua pergunta o nível de linguagem que você está usando; certas línguas legados podem fazer determinados mecanismos indisponíveis.

O melhor mecanismo de inclusão / abstração é a de módulos.

Em primeiro lugar, definir o seu nível de linguagem de "módulo". Então, se eu tiver esses dois arquivos no mesmo diretório:

usos-square.ss arquivo:

#lang scheme

(require "square.ss")

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

square.ss arquivo:

#lang scheme

(provide square)

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

Então eu posso bater "correr" sobre os "usos-square.ss" tampão e tudo vai funcionar da maneira que você esperaria.

Advertência:. Código não testado

Outras dicas

Eu acredito que você está procurando:

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

A expressão (exigem) é para os módulos de carga.

No MIT / Esquema GNU, você pode carregar um arquivo com algo como isto:

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

Mas eu não sei se ele funciona em DrScheme.

(require "~/path-to-directory/filename")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top