User Tools

Site Tools


ex-l5
  1. Definire una funzione foo che abbia il seguente tipo:
    (string -> int) -> string * int -> 'a -> string * int
  2. Definire una funzione foo che abba il seguente tipo:
    (int -> int) -> (int -> int) -> (int->int)
  3. Scrivere una versione tail-recursive della funzione che calcola la lunghezza di una lista
     length: 'a listint
  4. Scrivere una funzione 'f : int list → bool' che restituisca 'true' se la lista e’ ordinata in maniera crescente.
  5. 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];;
  6. Definire una funzione 'count: 'a → 'a list → int' che conti il numero di occorrenze di un elemento in una lista
  7. Definire una funzione 'nth: int → 'a list → 'a' che restituisca l’ennesimo elemento di una lista.
  8. Definire una funzione 'take: int → 'a list → 'a' list che restituisca i primi n elementi di una lista.
  9. Definire una funzione 'split : ('a * 'b) list → 'a list * 'b list' che trasformi una lista di coppie in una coppia di liste
  10. Utilizzando soltanto i combiatori map, filter e addidx, scrivere le seguenti funzioni:
    1. 'search: 'a → 'a list → bool' restituisce true se l’elemento e’ presente nella lista
    2. 'evenidx: 'a list → 'a' data una lista crea la sottolista degli elementi che appaiono in posizione pari
  11. 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)