Pregunta

He intentado hacer esto:

#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)))))

Pero me sale este error:

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)))))

¿qué es la forma correcta?

¿Fue útil?

Solución

Usted debe quitar la línea (module duck scheme/base (y los paréntesis de cierre).

Al iniciar su código con #lang scheme, se está poniendo efectivamente su código en un módulo que utiliza el lenguaje scheme. También puede utilizar #lang scheme/base si desea que el idioma más pequeña en su lugar.

(para conseguir realmente convencidos, hacer esto:

(parameterize ([read-accept-reader #t])
  (call-with-input-file "some file" read))

sobre algún archivo de origen que utiliza #lang y ver lo que hay.)

(Y por cierto, el título de tu pregunta es malo -. Que debe ser "PLT Scheme", ya que este no es relevante para otras implementaciones)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top