User Tools

Site Tools


ex-l7
  1. Definire le seguenti funzioni
    1. ('a → 'b) → 'a list → 'b list
    2. int list → int list
    3. ('a → bool) → 'a list → 'a list
    4. (int * float) list → (string * string) list
    5. ('a → 'b → 'b) → 'a list → 'b → 'b
    6. ('a * 'b) list → 'a list * 'b list

Risolvere i seguenti esercizi utilizzando i combinatori per liste map, filter e fold (ove conveniente).

  1. Definire una funzione pair: ('a * 'b) list → 'a list * 'b list che trasformi una lista di coppie in una coppia di liste
  2. Definire la funzione split : int → 'a list → 'a list * 'a list tale che split n l divida la lista l in due, di cui la prima sia lunga n.
  3. Definire la funzione merge : 'a list → 'a list → 'a list tale che date due liste ordinate in maniera crescente restituisca una lista ordinata in maniera crescente.
  4. Scrivere la funzione splitRev: int → 'a list → 'a list * 'a list , tale che split n l divida la lista l in due, contando n elementi a partire dal fondo. Ad esempio : splitRev 3 [1;2;3;4;5;6;7]= ([1;2;3;4],[5;6;7])
  5. Definire la funzione count: 'a → 'a list → int che conti il numero di occorrenze di un elemento in una lista, utilizzando la funzione List.fold_right.
  6. Definire la funzione minList : 'a list → 'a che calcoli il minimo elemento di una lista.
  7. Definire la funzione rev: 'a list → 'a list per invertire una lista, completando il seguente pezzo di codice:let rev l = List.fold_right….
  8. Definire le funzioni take: int → 'a list → 'a list e drop : int → 'a list → 'a list tali che take n l restituisca i primi n elementi di l e drop n l i restanti, in modo che valga la proprieta’: take n xs @ drop n xs = xs
  9. Definire la funzione last : 'a list → 'a che restituisca l’ultimo elemento di una lista.
ex-l7.txt · Last modified: 2015/10/08 15:20 (external edit)