Alcune regolette sintattiche

Come diceva Galileo Galilei:

«Se ci sforziamo di essere ordinati, poi è più facile ritrovare le chiavi della macchina».

Chi siamo noi per contraddirlo? Quindi è bene darci alcune regolette di buona scrittura del codice sorgente racket.

Indentazione del codice

Quando scriviamo il nostro codice, il parser di racket non tiene conto degli spazi e degli accapo.

Per rendere però il codice più leggibile è bene adottare uno stile di scrittura standard.

Per esempio nelle definizioni/funzioni il corpo contenente le espressioni viene fatto rientrare di due spazi, mentre la parte contenente l’identificativo e la lista degli eventuali argomenti è racchiusa tra parentesi tonde e scritta su un’unica riga.

Se utilizziamo l’ambiente di sviluppo DrRacket l’indentazione è automatica:

Schermata del 2018-05-13 09-07-32

Sintassi per gli identificativi

Quando ci troviamo a dover battezzare un nostro identificativo, dobbiamo ricordarci di non inserire degli spazi e di non utilizzare mai questi caratteri:

( ) [ ] { } " , ' ` ; # | \

I seguenti identificativi sono quindi tutti validi:

Pecore
pEcore
p_ecore6
6p_ecore
6+3
6/3
pecore-bianche

Prossimo articolo: Chiamare una procedura (o funzione)

Definizioni

In Racket possiamo distinguere due procedure di base:

  1. Assegnazione
  2. Funzione

Assegnazione

Si tratta della procedura più semplice e questa è la sua forma:

(define <identificativo> <espressione>)

Per esempio:

(define pigreco 3.14)

Ciò significa che all’identificativo pigreco viene collegato il valore 3.14.

Funzione

Salendo ad un grado di complessità superiore arriviamo al tipo di procedura che possiamo associare al concetto di funzione. In questo caso vengono introdotti degli argomenti:

(define (<identificativo> <argomento 1> <...> <argomento n>)
 (<espressione 1>)
 (<...>)
 (<espressione n>))

Attenzione: sebbene in questo tipo di procedure sia possibile inserire più espressioni, in realtà soltanto il valore dell’ultima espressione (<espressione n>) verrà collegato all’identificativo.

Le altre espressioni possono essere utilizzate per scopi particolari come, per esempio, modificare dei valori, compiere delle azioni come la stampa di un risultato, o altro ancora.

Questo tipo di espressioni vengono considerate come effetti collaterali (side-effect).

Le norme di buona programmazione consigliano di evitare gli effetti collaterali in modo tale da rispettare il più possibile il paradigma della programmazione funzionale il quale prevede che la chiamata di una funzione produca un solo risultato.

Questa modalità di scrivere il codice rende lo stesso più facile da manutenere ed evita di incappare in fastidiosi bachi software.

È bene quindi che nelle nostre procedure/funzioni ci sia una sola espressione.

Ecco un esempio commentato. Si noti che per i commenti su una sola riga si antepone il simbolo del punto e virgola, mentre i commenti su più righe vanno inseriti tra le coppie dei simboli #| … |#.

example_001


Prossimo articolo: Alcune regolette sintattiche

DrRacket: scelta del linguaggio

Al suo avvio l’ambiente di sviluppo DrRacket si presenta suddiviso in due aree disposte in verticale:

  • l’area superiore è chiamata Area delle definizioni ed è l’area dove tipicamente scriviamo il codice;
  • l’area inferiore viene utilizzata per interrogare il nostro codice fornendo un ambiente REPL (read-eval-print loop)

DrRacket - ambiente di sviluppo

La prima cosa da fare è scegliere una delle varianti disponibili del linguaggio Racket. Per farlo occorre scrive nell’area superiore la specifica stringa. Per esempio per indicare la variante normale del linguaggio dobbiamo scrivere:

#lang racket

Per rendere effettiva qualsiasi modifica da noi fatta al codice occorre sempre ricordarsi di premere il pulsante Run.

Per visualizzare ed eventualmente scegliere altre varianti del linguaggio possiamo:

  • scegliere la voce del menu Language|Chose Language…
  • oppure digitare la scorciatoia da tastiera Ctrl+L

Prossimo articolo: Definizioni

Introduzione a Racket

Racket è un linguaggio di programmazione multi-paradigma sviluppato a partire dal linguaggio Scheme, a sua volta derivato dal Lisp.

Nelle varie liste dei linguaggi di programmazione, Racket compare sia in quella dei linguaggi educativi, che in quella dei linguaggi funzionali dove viene classificato come linguaggio funzionale impuro.

Come vuole subito farci intendere il motto riportato nella pagina principale del sito ufficiale di Racket: «solve problems, make languages», le sue due caratteristiche principali sono:

  1. la possibilità di risolvere problemi generici;
  2. la possibilità di creare altri linguaggi di programmazione che possiamo considerare come sue varianti.

La seconda caratteristica, a mio modo di vedere, rende lo studio di Racket molto interessante.

Sebbene il compilatore/interprete racket possa essere utilizzato con differenti ambienti di sviluppo (IDE), esso viene fornito insieme ad un suo specifico IDE denominato DrRacket.

Tra gli strumenti messi a disposizione vi è anche raco: uno strumento a linea di comando per l’installazione di pacchetti aggiuntivi, la costruzione di librerie ed altro ancora.


Prossimo articolo: DrRacket: scelta del linguaggio