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?

Foi útil?

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
scroll top