Ако не искате да слагате
'
накрая на имената на някои от следващите функции, може да махнете автоматичното import-ване на съответните функции, защото те са вградени в Prelude:
import Prelude hiding (sum, length, maximum, elem, reverse, take, drop, concat, zipWith)
Напишете типови декларации и дефиниции на следните функции:
sum'
– сумира всички елементи на списък от числаisSorted
- проверява дали списък от числа е сортиранlength'
– намира дължина на списъкmaximum'
– намира най-големия елемент в списъкelem'
– намира дали елемент се съдържа в списъкelem' :: a -> [a] -> Bool
reverse'
– обръща реда на елементите на списъкisPrefix
– приема два списъка и връща дали първия е префикс на вторияisPrefix [1,2,3] [1,2,3,4,5] -> True
take'
– взима първитеn
елемента от даден списъкdrop'
- премахва първитеn
елемента от даден списъкzip'
- по дадени два списъка връща списък от наредени двойки с елементите имzip' [1,2,3] [4,5,6,7] -> [(1,4),(2,5),(3,6)]
concat'
– по списък от списъци прави списък, тоест слепя всички елементи на списъкаconcat' [[1,2,3],[4],[5,6]] -> [1,2,3,4,5,6]
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]