Задание на функциональном языке программирования haskell
Функции для работы с типом List.
Для введенного ранее типа List определите следующие функции:
1). lengthList, возвращающую длину списка типа List.
2). nthList, возвращающую n-й элемент списка.
3). removeNegative, которая из списка целых (тип List Integer) удаляет отрицательные элементы.
4). fromList, преобразующую список типа List в обычный список.
5). toList, преобразующую обычный список в список типа List.
Решение:
lengthList :: List Int -> Int
lengthList (Cons x xs) = 1+lengthList xs
lengthList NIL = 0
nthList :: List Int -> Int -> Int
nthList NIL n = 0
nthList (Cons x xs) n = if n/=1 then nthList xs (n-1) else x
removeNegative :: List Int -> List Int
removeNegative NIL = NIL
removeNegative (Cons x xs) = if x>0 then Cons x (removeNegative xs) else removeNegative xs
fromList :: List Int -> [Int]
fromList NIL = []
fromList (Cons x xs) = x:fromList xs
toList :: [Int] -> List Int
toList [] = NIL
toList (x:xs) = Cons x (toList xs)
Результаты:
4 :: Int
Main> nthList (Cons 5 (Cons 10 (Cons 12 (Cons 3 NIL)))) 3
12 :: Int
Main> removeNegative (Cons 5 (Cons (-10) (Cons 11 (Cons (-8) NIL))))
Cons 5 (Cons 11 NIL) :: List Int
Main> fromList (Cons 5 (Cons (-10) (Cons 11 (Cons (-8) NIL))))
[5,-10,11,-8] :: [Int]
Main> toList [2,8,0,19]
Cons 2 (Cons 8 (Cons 0 (Cons 19 NIL))) :: List Int
Дополнительное задание:
написать функцию, возвращающую сумму элементов списка list.
sumList NIL = 0
sumList (Cons x xs) = x + sumList xs
Если вам нравится то, что мы пишем, пожалуйста, нажмите на интересующую вас рекламу сбоку, сверху, или сразу после статьи. Будет стимул писать лучше и чаще. Хорошего вам дня.