Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione funzionale / Sequenze pigre e infinite

L’operatore di sequenza

L’operatore di sequenza ... costruisce un elenco a partire da uno schema iniziale fino a un valore finale. Dagli i primi elementi e l’estremo, e capirà da sé come la serie continua:

say (2, 4 ... 10); # (2 4 6 8 10)

Da 2, 4 deduce «aggiungi due ogni volta» e continua finché non raggiunge 10. Il passo può anche essere all’ingiù:

say (10, 8 ... 2); # (10 8 6 4 2)

Se gli elementi crescono per moltiplicazione invece che per addizione, l’operatore se ne accorge lo stesso:

say (1, 2, 4 ... 64); # (1 2 4 8 16 32 64)

Qui ogni termine è il doppio del precedente, quindi la sequenza è geometrica.

Quando la regola è più complessa di quanto l’operatore possa indovinare, puoi fornirla esplicitamente come chiusura degli elementi precedenti. Per esempio, una regola esplicita «aggiungi il passo»:

say (1, * + 2 ... 9); # (1 3 5 7 9)

Il blocco * + 2 dice come ottenere l’elemento successivo dall’attuale. Con questo, ... può esprimere qualunque sequenza tu sappia descrivere con una regola.

Pratica

Risolvi 1 quiz sul contenuto di questo argomento.

Sequenze pigre e infinite   |   Quiz — L’operatore di sequenza


💪 Oppure vai direttamente agli esercizi di questa sezione.