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?

È stato utile?

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