Come posso creare un modulo nello schema PLT?
-
12-09-2019 - |
Domanda
Ho provato a fare questo:
#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)))))
Ma ottengo questo errore:
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)))))
qual è il modo corretto?
Soluzione
Dovresti rimuovere il (module duck scheme/base
linea (e la parentesi di chiusura).
Quando inizi il codice con #lang scheme
, sta effettivamente inserendo il tuo codice in un modulo che utilizza il file scheme
lingua.Puoi anche usare #lang scheme/base
se invece vuoi la lingua più piccola.
(Per convincerti davvero, fai questo:
(parameterize ([read-accept-reader #t])
(call-with-input-file "some file" read))
su alcuni file sorgente che utilizzano #lang
e vedi cosa ottieni.)
(E a proposito, il titolo della tua domanda è pessimo: dovrebbe essere "Schema PLT", poiché non è rilevante per altre implementazioni.)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow