Skip to content

Latest commit

 

History

History
40 lines (34 loc) · 2.19 KB

File metadata and controls

40 lines (34 loc) · 2.19 KB

Упражнение 10 – Списъци и кортежи в Haskell

Ако не искате да слагате ' накрая на имената на някои от следващите функции, може да махнете автоматичното import-ване на съответните функции, защото те са вградени в Prelude:

import Prelude hiding (sum, length, maximum, elem, reverse, take, drop, concat, zipWith)

Напишете типови декларации и дефиниции на следните функции:

  1. sum' – сумира всички елементи на списък от числа
  2. isSorted - проверява дали списък от числа е сортиран
  3. length' – намира дължина на списък
  4. maximum' – намира най-големия елемент в списък
  5. elem' – намира дали елемент се съдържа в списък
    elem' :: a -> [a] -> Bool
  6. reverse' – обръща реда на елементите на списък
  7. isPrefix – приема два списъка и връща дали първия е префикс на втория
    isPrefix [1,2,3] [1,2,3,4,5] -> True
  8. take' – взима първите n елемента от даден списък
  9. drop' - премахва първите n елемента от даден списък
  10. zip' - по дадени два списъка връща списък от наредени двойки с елементите им
    zip' [1,2,3] [4,5,6,7] -> [(1,4),(2,5),(3,6)]
  11. concat' – по списък от списъци прави списък, тоест слепя всички елементи на списъка
    concat' [[1,2,3],[4],[5,6]] -> [1,2,3,4,5,6]
  12. zipWith' – по два списъка образува нов, извиквайки функция над всеки от елементите
    zipWith' (,) [1,2,3] [4,5,6,7] -> [(1,4),(2,5),(3,6)]
    zipWith' (+) [1,2,3] [4,5,6,7] -> [5,7,9]