Haskell - Ús de llistes per comprensió P93588


Statement
 

pdf   zip

thehtml

En aquest problema heu d’implementar una sèrie de funcions usant llistes per comprensió.

  1. Feu una funció myMap :: (a -> b) -> [a] -> [b] que emuli el map usant llistes per comprensió.
  2. Feu una funció myFilter :: (a -> Bool) -> [a] -> [a] que emuli el filter usant llistes per comprensió.
  3. Feu una funció myZipWith :: (a -> b -> c) -> [a] -> [b] -> [c] que que emuli el zipWith usant llistes per comprensió i zip.
  4. Feu una funció thingify :: [Int] -> [Int] -> [(Int, Int)] que, donades dues llistes d’enters, genera la llista que aparella els elements si l’element de la segona llista divideix al de la primera.
  5. Feu una funció factors :: Int -> [Int] que, donat un natural no nul, genera la llista ordenada amb els seus factors (no necessàriament primers).

Puntuació

Cada apartat puntua 20 punts.

Public test cases
  • Input

    myMap (*2) [1..5]
    myFilter odd [1..5]
    myZipWith (*) [1..4] [1..4]
    thingify [1..6] [1..3]
    factors 24
    

    Output

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