Haskell - Definició de funcions d'ordre superior (2) P71775


Statement
 

pdf   zip

html

Aquest problema explora la definició de funcions d’ordre superior sobre llistes.

  1. Feu una funció countIf :: (Int -> Bool) -> [Int] -> Int que, donat un predicat sobre els enters i una llista d’enters, retorna el nombre d’elements de la llista que satisfan el predicat.

    Nota: Aquesta funció d’ordre superior existeix en llenguatges de tractament de fulls de càlcul com ara EXCEL.

  2. Feu una funció pam :: [Int] -> [Int -> Int] -> [[Int]] que, donada una llista d’enters i una llista de funcions d’enters a enters, retorna la llista de llistes resultant d’aplicar cada una de les funcions de la segona llista als elements de la primera llista.
  3. Feu una funció pam2 :: [Int] -> [Int -> Int] -> [[Int]] que, donada una llista d’enters i una llista de funcions d’enters a enters, retorna la llista de llistes on cada llista és el resultat d’aplicar successivament les funcions de la segona llista a cada element de la primera llista.

    Nota: Qualsevol semblança amb La parte contratante de la primera parte será considerada como la parte contratante de la primera parte és pura casualitat.

  4. Feu una funció filterFoldl :: (Int -> Bool) -> (Int -> Int -> Int) -> Int -> [Int] -> Int que fa el plegat dels elements que satisfan la propietat donada.
  5. Feu una funció insert :: (Int -> Int -> Bool) -> [Int] -> Int -> [Int] que donada una relació entre enters, una llista i un element, ens retorna la llista amb l’element inserit segons la relació.

    Utilitzant la funció insert, feu una funció insertionSort :: (Int -> Int -> Bool) -> [Int] -> [Int] que ordeni la llista per inserció segons la relació donada.

Puntuació

Cada apartat puntua 20 punts.

Public test cases
  • Input

    countIf (>5) [1..10]
    pam [1,2,3] [(+1),(*2),(^2)]
    pam2 [1,2,3] [(+1),(*2),(^2)]
    filterFoldl even (*) 1 [4,7,2,4,9,3]
    insert (<) [1,4,6,9,12] 8
    insertionSort (>) [4,5,2,3,1,3]
    

    Output

    5
    [[2,3,4],[2,4,6],[1,4,9]]
    [[2,2,1],[3,4,4],[4,6,9]]
    32
    [1,4,6,8,9,12]
    [5,4,3,3,2,1]
    
  • Information
    Author
    Albert Rubio / Jordi Petit
    Language
    Catalan
    Other languages
    English
    Official solutions
    Haskell
    User solutions
    Haskell