ex-l5
-
Definire una funzione foo che abba il seguente tipo:
(int -> int) -> (int -> int) -> (int->int)
Scrivere una versione tail-recursive della funzione che calcola la lunghezza di una lista
length: 'a list → int
Scrivere una funzione 'f : int list → bool
' che restituisca 'true
' se la lista e’ ordinata in maniera crescente.
Definire una funzione
'flatten
' tale che data una lista di liste ne appiattisca un livello e restituisca una lista. Es:
flatten [ [1;2];[3;4;5];[6;7;8]] = [1;2;3;4;5;6;7;8];;
Definire una funzione 'count: 'a → 'a list → int
' che conti il numero di occorrenze di un elemento in una lista
Definire una funzione 'nth: int → 'a list → 'a
' che restituisca l’ennesimo elemento di una lista.
Definire una funzione 'take: int → 'a list → 'a
' list che restituisca i primi n elementi di una lista.
Definire una funzione 'split : ('a * 'b) list → 'a list * 'b list
' che trasformi una lista di coppie in una coppia di liste
Utilizzando soltanto i combiatori map, filter e addidx, scrivere le seguenti funzioni:
'search: 'a → 'a list → bool
' restituisce true se l’elemento e’ presente nella lista
'evenidx: 'a list → 'a
' data una lista crea la sottolista degli elementi che appaiono in posizione pari
Scrivere una funzione
'pal: int → bool
' che restituisca true se il numero e’ palindromo. Es:
pal 12344321 = true;; pal 12321 = true;; pal 12345656 = false;;
ex-l5.txt · Last modified: 2015/10/08 15:20 (external edit)