Racket – documentazione

alvert.001

OK, non parlo più del meraviglioso HtDP perché non ne sono capace. È troppo bello così com’è, non si può riassumere. Ottimo corso introduttivo alla programmazione (funzionale ma non necessariamente). Invece parto alla ricerca di guide dedicate al linguaggio.

Come già detto l’installazione di Racket comprende una ricca documentazione in locale. Siccome sono previste diverse possibilità di installazione per scoprite dove siano messi i documenti si può usare , doc nella REPL:

r-docs

Io ho creato un alias per la REPL: rre='racket -il xrepl'.
OK, io sono affezionato a REPL ma DrRacket ha i suoi vantaggi, tanti, troppi per elencarli. Anche lì ho creato un alias, drr=drracket, ma forse ho esagerato.

La directory della documentazione è impressionante:

elenco

questa è solo la schermata iniziale; i nomi in azzurro sono directories. Panico? probabilmente no. Intanto si parte con la guida, per me /usr/racket/doc/guide/index.html.

The Racket Guide
This guide is intended for programmers who are new to Racket or new to some part of Racket. It assumes programming experience, so if you are new to programming, consider instead reading How to Design Programs. If you want an especially quick introduction to Racket, start with Quick: An Introduction to Racket with Pictures.

Poi riporta che c’è un documento più pistino:
The Racket Reference
This manual defines the core Racket language and describes its most prominent libraries. The companion manual The Racket Guide provides a friendlier (though less precise and less complete) overview of the language.

OK, parto dalla Guide, Welcome to Racket.
Racket è diverse cose, Racket’s main tools are

  • racket, the core compiler, interpreter, and run-time system;
  • DrRacket, the programming environment; and
  • raco, a command-line tool for executing Racket commands that install packages, build libraries, and more.

Se si usa DrRacket occorre specificare #lang racket per via delle varianti. DrRacket è bello come Emacs/SLIME direi se non temessi gli emacscisti 😉

Già visto come la finestra di DrRacket sia composta di definitions area e interactions area; quest’ultima è una vera e propria REPL dove per richiamare le espressioni precedenti si usa <esc>P.

w0

Ho salvato la funzione nella definitions area nel file h-w.rkt (conviene mettere l’estensione, da solo no lo fa).
Adesso posso aprirlo nella REPL:w1

Questo vale se è attiva xrepl (prossimamente…) altrimenti si può usare:

w2

Il file h-w.rkt è questo:

#lang racket
(define (h-w)
  (println "hello world!"))

Per ricaricarlo successivamente in DrRacket usar File|Open… e poi Run (che io dimentico sempre).
Notare che il tab entro il codice funziona proprio come in SLIME –formatta. DrRacket rockz! 😀

A me viene la tentazione di fare un piccolo esperimento, chissà, modificarlo così (hw1.rkt):

#lang racket
(define (h-w)
  (println "hello world!"))
(h-w)

w3

Ok, come previsto; il passo successivo è di renderlo eseguibile, dopo averlo modificato in hw2.rkt:

#!/usr/bin/racket
#lang racket
(define (h-w)
  (println "hello world!"))
(h-w)

w4

OK. L’istruzione #lang racket è necessaria; magari in seguito se ne parlerà. Esiste anche raco, ma non m’avventuro oltre 😉

Ma aspetta: è proprio quello che dice la guida. Anzi dice anche qualcosa in più: per problemi di portabilità si dovrebbe usare env nella shebang. E sì, pare che si possa lasciare uno spazio dopo #! (non lo sapevo, anzi ero convinto del contrario, forse dai tempi di UNIX).

Una raccomandazione per i lispisti: load funziona ma fa casino sia nel segnalare errori che per la performance.

OK, pausa 😀
I problemi incontrati nel raccontare HtDP con la guida sono spariti :mrgreen:

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: