Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 15

Функции обработки данных типа List

23.05.2014, 17:21. Показов 1802. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пожалуйста, помогите доработать эти функции:

removeNegative, которая из списка целых (тип List Integer) удаляет отрицательные элементы.

Haskell
1
2
3
4
removeNeg :: (Num a, Ord a) => List a -> List a
removeNeg Nil = Nil
removeNeg (Cons x t) | (x < 0) = removeNeg t
                     | otherwise = (Cons x (removeNeg t))
нужно Можно написать как то иначе? (с removeNedative :: List Int -> List Int)


lengthList, возвращающую длину списка типа List.

Haskell
1
2
3
lengthList :: List a -> Int
lengthList Nil = 0
lengthList (Cons _ t) = 1 + lengthList t
а эту переписать через maybe, что бы при пустом списке возвращал False Nothing

nthList, возвращающую n-й элемент списка.

Haskell
1
2
3
nthList :: List Int -> Int -> Int
nthList Nil n = 0
nthList (Cons x xs) n = if n/=1 then nthList xs (n-1) else x
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.05.2014, 17:21
Ответы с готовыми решениями:

Для введенного ранее типа List определить указанные функции
Функции для работы с типом List. Для введенного ранее типа List определите следующие функции: 1) lengthList, возвращающую длину списка...

Программирование операций обработки данных типа запись
берутся задания к лабораторной работе 8 “Программирование операций обработки данных типа запись”, но при этом записи не вводятся при каждом...

Сохранение данных пользовательского типа в list из stl
Здравствуйте. Пишу программу реализации списка. #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;string&gt; #include...

6
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
23.05.2014, 19:23
Цитата Сообщение от Irinabond Посмотреть сообщение
Можно написать как то иначе?
- да, можно:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
data List a = Nil | Cons a (List a) deriving Show
 
removeNeg :: (Num a, Ord a) => List a -> List a
removeNeg Nil = Nil
removeNeg (Cons x t) | (x < 0) = removeNeg t
                     | otherwise = (Cons x (removeNeg t)) 
  
fromList :: List a -> [a]
fromList Nil = []
fromList (Cons x t)= x : fromList t
 
toList :: [a] -> List a
toList [] = Nil
toList (x:xs) = Cons x (toList xs)
 
removeNeg' :: (Num a, Ord a) => List a -> List a
removeNeg' x = toList $ filter (>=0) (fromList x) 
 
Main> removeNeg' (Cons 1 (Cons (-2) (Cons (-5) (Cons 0 (Cons 6 Nil)))))
Cons 1 (Cons 0 (Cons 6 Nil))
0
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 15
23.05.2014, 19:37  [ТС]
removeNeg :: (Num a, Ord a) => List a -> List a объясните пожалуйста означает (Num a, Ord a) => List a? проще это написать нельзя?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
23.05.2014, 20:29
n-й элемент списка:

Haskell
1
2
3
nthList :: List Int -> Int -> Maybe Int
nthList Nil n = Nothing
nthList (Cons x xs) n = if n /= 1 then nthList xs (n-1) else Just x
Добавлено через 2 минуты
Цитата Сообщение от Irinabond Посмотреть сообщение
объясните пожалуйста означает (Num a, Ord a) => List a? проще это написать нельзя?
- это называется "ограничение типа". List a - сложный тип. a - типовая переменная. Тип a классу типов Num и Ord.
0
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 15
23.05.2014, 20:56  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Код Haskell
1
2
3
nthList :: List Int -> Int -> Maybe Int
nthList Nil n = Nothing
nthList (Cons x xs) n = if n /= 1 then nthList xs (n-1) else Just x
тут дает ошибку. я правильно определяю Maybe
data Maybe a = Nothing | Just a
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
23.05.2014, 22:09
Цитата Сообщение от Irinabond Посмотреть сообщение
тут дает ошибку.
- какую?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
24.05.2014, 08:59
Цитата Сообщение от Irinabond Посмотреть сообщение
я правильно определяю Maybe
Его не надо определять, он уже есть по-умолчанию.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.05.2014, 08:59
Помогаю со студенческими работами здесь

Вызов функции типа List<T>, которая с параметрами, без параметров
В общем разбираюсь в чужих исходниках и понимаю, что либо я дурак, либо лыжи не едут) Есть функция: public List&lt;T&gt;...

Используя заданную структуру данных. Сформировать соответствующие функции для обработки этих данных
Пожалуйста помогите написать программу под программу Dev C++ Задание: 1.Описать структуру с именем MARSH, содержащую следующие...

Создать систему обработки данных однотабличной базы, состоящей из записей следующего типа
Создать систему обработки данных однотабличной базы, состоящей из записей следующего типа: // тип данных номера зачетной книжки ...

Описать операции для обработки элементов первой структуры данных в соответствии с ее типа
Написать программу на языке C в такой последовательности действий: 1) описать первую структуру данных (табл. 1, столб. 2). Тип элементов...

Функции обработки данных в стеке
Программа должна делать следующие функции Реализация связи элементов линейного списка - Курсоры (область памяти - массив структур) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru