Vai al contenuto
Leo

Appendici

Appendice A — Riferimento rapido della sintassi

Una pagina sola da tenere sottomano. Tutte le forme qui elencate sono trattate per esteso nei capitoli; qui le ritrovi in forma compatta.

Commenti e struttura

Risultato
# commento di riga
#[ commento
   su più righe ]#

I blocchi si aprono con allora (dopo se, altrimenti se, caso) o con fai (dopo mentre, per ogni, quando) e si chiudono sempre con fine. A fine riga allora/fai si possono omettere. ripeti N volte non vuole né l'uno né l'altro.

Dati

Leo
variabile x = 0          # dichiara (poi: x = 5, x += 1)
costante PI = 3.14       # non si può più cambiare
variabile a, b = 1, 2    # più nomi insieme; scambio: a, b = b, a
TipoEsempio
intero42, -7, 1_000_000, 2 ^ 100
decimale3.14 (punto, non virgola)
testo"ciao", """su più righe"""
logicovero, falso
nullanulla
lista[1, 2, 3]
dizionario{"nome": "Ada"}
soldi / frazionesoldi("1.50"), frazione(1, 3)

Operatori

Aritmetici: + - * / (sempre decimale) // (quoziente intero) % (resto) ^ (potenza). Confronto: == != < <= > >=, in, è / non è (con nulla). Logici: e, o, non. Catena: valore |> funzione.

Testi

Risultato
"Ciao {nome}, hai {anni + 1} anni"     # interpolazione
"{prezzo:2}"          # due decimali
"{n:migliaia}"        # punti delle migliaia
"{importo:migliaia 2}"   # entrambi (all'italiana)
testo[0]  testo[-1]  testo[0..2]       # indici e fette

Condizioni

Leo
se condizione allora
    ...
altrimenti se altra allora
    ...
altrimenti
    ...
fine

scegli valore
    caso 10 allora ...
    caso 8, 9 allora ...
    caso 6..7 allora ...
    altrimenti ...
fine

Cicli

Leo
mentre condizione fai ... fine
per ogni x in sequenza fai ... fine
per ogni chiave, valore in dizionario fai ... fine
ripeti 3 volte ... fine
ripeti per sempre ... fine        # con interrompi
ogni 1 secondo fai ... fine       # temporizzato
dopo 3 secondi fai ... fine

interrompi esce dal ciclo; continua salta al giro dopo.

Funzioni

Leo
funzione nome(a, b = 10)
    restituisci a + b
fine

variabile f = funzione (x) restituisci x * 2 fine   # anonima
funzione tutti(valori...) ... fine                  # quanti argomenti vuoi
nome(voti...)                                       # srotola una lista

Senza restituisci, una funzione si chiama anche come comando: saluta Ada.

Errori

Leo
prova
    ...
cattura ErroreValore come e
    scrivi(e.messaggio)
cattura come e
    ...
infine
    ...
fine

lancia ErroreValore("messaggio")

verifica "nome" fai          # test, eseguiti con `leo verifica`
    aspettati doppio(21) == 42
    aspettati errore ErroreValore fai ... fine
fine

Classi

Leo
classe Persona
    ha nome
    ha eta = 0
    azione saluta()
        scrivi "Ciao, sono {questo.nome}"
    fine
fine
variabile p = Persona("Ada", 36)      # oppure: nuovo Persona(...)

classe Cane estende Animale
    azione verso() dà testo
        restituisci genitore.verso() + "!"
    fine
fine

Moduli

Leo
importa "forme.leo"            # porta dentro i nomi
importa forme come f           # usa con il punto: f.area(2)
importa matematica come m      # anche i gruppi della libreria

Parallelismo e sequenze pigre

Leo
variabile l = in parallelo fai restituisci calcolo() fine
scrivi(aspetta(l))
variabile c = canale()   # c.invia(x), c.ricevi(), c.chiudi()
aspetta_tutti([l1, l2])  aspetta_il_primo([l1, l2])  annulla(l)

numeri_infiniti(1).mappa(f).filtra(g).prendi(5).a_lista()
pigra(lista).finche(f).a_lista()

Esecuzione

Risultato
leo programma.leo           # esegui
leo verifica programma.leo  # esegui i blocchi `verifica`
leo controlla progetto      # controlli statici (senza eseguire)
leo formatta programma.leo  # riscrive nella forma canonica
leo compila programma.leo   # eseguibile Windows
leo                         # REPL interattivo