¿Cómo hago un módulo en el Esquema PLT?
-
12-09-2019 - |
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?
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