ESERCIZI PROGRAMMAZIONE HASKELL




Esercizio 1

Scrivere la funzione Haskell "pippo" che corrisponde al lambda termine
              \xy.yx

  • Possibile soluzione.

    Esercizio 2

    Definire una funzione Haskell ricorsiva che prenda in input un numero naturale n e calcoli la somma di tutti i numeri pari da 0 a n. (Usare il predicato Haskell che controlla se un numero e' pari  )

    Esercizio 3

    Definire in Haskell la funzione "manoh" che, preso un numero n, restituisce la somma dei quadrati dei naturali da 0 ad n.
  • Possibile soluzione.

    Esercizio 4

    Definire in Haskell la funzione "mavah" che, preso un numero n, restituisce il quadrato della somma dei naturali da 0 ad n.
    Esercizio 5

    Definire in Haskell la funzione "madaih" che, preso un numero n, restituisce la somma dei naturali da 0 ad n.
    Esercizio 6

    Definire in Haskell la funzione "masih" che, preso un numero n, restituisce il quadrato della somma dei naturali da 0 ad n.
    Esercizio 6.5
    Supponiamo di aver definito in Scheme una funzione a valori booleani (un predicato) "cucu". Definire una funzione Scheme che, dati in input due numeri naturali n ed m (n ≤ m), restituisca la somma di tutti i numeri compresi tra n ed m che soddisfano il predicato "cucu".
    Esercizio 7
    Fornire una funzione Haskell che, preso in input un predicato p sui naturali restituisca una funzione sui naturali che vale 2 sui numeri su cui p e' vero e 3 sui numeri su cui p e' falso.

    Esercizio 11
    Definire la funzione Haskell che implementi l'insertion sort su liste, avendo come parametro anche la relazione di precedenza.
  • Possibile soluzione.

    Esercizio 18 Definire una funzione Haskell che prenda in input un predicato su numeri una lista ls contenente liste di numeri e restituisca una lista uguale ad ls, ma con 0 al posto dei numeri che soddisfano il predicato p?
  • Possibile soluzione.

    Esercizio 32 Scrivere un programma Haskell che riconosca o rifiuti stringhe appartenenti al linguaggio regolare, sull'alfabeto {a,b,c}, associato alla seguente espressione regolare
    abc*b + aa
    Ricordiamo che il tipo String in Hakell coincide con [Char] e che un carattere si rappresenta tra apici (es.: 'a').
  • Possibile soluzione.