Como posso fazer um módulo no Esquema PLT?
-
12-09-2019 - |
Pergunta
Eu tentei fazer isso:
#lang scheme
(module duck scheme/base
(provide num-eggs quack)
(define num-eggs 2)
(define (quack n)
(unless (zero? n)
(printf "quack\n")
(quack (sub1 n)))))
Mas eu recebo este erro:
module: illegal use (not at top-level) in:
(module duck scheme/base (provide num-eggs quack) (define num-eggs 2) (define (quack n) (unless (zero? n) (printf "quack\n") (quack (sub1 n)))))
O que é a maneira correta?
Solução
Você deve remover a linha (module duck scheme/base
(e o parêntese de fechamento).
Quando você começar o seu código com #lang scheme
, é efetivamente colocar seu código em um módulo que usa a linguagem scheme
. Você também pode usar #lang scheme/base
se você deseja que o idioma menor vez.
(Para realmente ficar convencido, faça o seguinte:
(parameterize ([read-accept-reader #t])
(call-with-input-file "some file" read))
sobre algum arquivo de origem que usos #lang
e ver o que você recebe.)
(E BTW, o título da sua pergunta é ruim -. Deve ser "PLT Scheme", uma vez que este não é relevante para outras implementações)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow