Domanda

Quando si utilizza DrScheme con R5RS, non v'è alcuna funzione di errore. Ho intenzione di scrivere il mio, ma non riesco a capire come fermare l'esecuzione del programma. Ho provato comandi come:

  • (arresto)
  • (uscita)
  • (errore)

e nessuno ha funzionato. Come si fa a interrompere l'esecuzione del programma?

È stato utile?

Soluzione

SLIB (biblioteca Scheme portatile) ha un'implementazione di ERRORE. Si potrebbe desiderare di uno guardare quella, o utilizzare SLIB nei vostri programmi.

Oltre a questo, un modo per fermare il programma è semplicemente quello di sollevare un errore diverso! Provare qualcosa di simile (grazie a Stephen Houben ):

(define (error reason . args)
      (display "Error: ")
      (display reason)
      (for-each (lambda (arg) 
                  (display " ")
          (write arg))
        args)
      (newline)
      (scheme-report-environment -1))  ;; we hope that this will signal an error

Mentre questo solleva un secondo errore (indipendente), sarà sicuramente fermare l'esecuzione del programma.

Altri suggerimenti

C'è un motivo è necessario utilizzare R5RS? Altre definizioni di lingua in DrScheme definiscono error e exit. Ad esempio, il (module ...) lingua PLT definisce mzscheme e <=>. Invocare <=> dalla riga di comando che si dà anche queste definizioni.

Nota: ho DrScheme 372, che è piuttosto vecchio. Le cose non dovrebbero aver cambiato troppo, però.

una soluzione brutta è quella di definire anomala per diventare un errore di runtime. per esempio uno di questi dovrebbe fare il trucco (define abort "the program was aborted") (define abort 123) (define abort #f) qualsiasi chiamata per interrompere (abort) dovrebbe generare un errore di runtime, se siete fortunati anche mostrare la corda, il codice di errore o qualsiasi altra cosa che ti interessano.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top