С Новым годом! Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/48: Рейтинг темы: голосов - 48, средняя оценка - 4.94
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 33

Определите следующие функции с использованием функций высшего порядка:

15.04.2014, 16:26. Показов 9634. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Определите следующие функции с использованием функций высшего порядка:

1) Функция вычисления арифметического среднего элементов списка вещественных чисел с использованием функции foldr. Функция должна осуществлять только один проход по списку.

2) Функция, вычисляющая скалярное произведение двух списков (используйте функции foldr и zipWith).

3) Функция countEven, возвращающая количество четных элементов в списке.

4) Функция quicksort, осуществляющая быструю сортировку списка по следующему рекурсивному алгоритму. Для того, чтобы отсортировать список xs, из него выбирается первый элемент (обозначим его x). Остальной список делится на две части: список, состоящий из элементов xs, меньших x и спи- сок элементов, больших x. Эти списки сортируются (здесь проявляется рекурсия, поскольку они сортируются этим же алгоритмов), а затем из них составляется результирующий список вида as ++ [x] ++ bs, где as и bs — отсортированные списки меньших и больших элементов соответственно.

5) Определенная в предыдущем пункте функция quicksort сортирует список в порядке возрастания. Обобщите ее: пусть она принимает еще один аргумент — функцию сравнения типа a -> a -> Bool и сортирует список в соответствие с нею.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2014, 16:26
Ответы с готовыми решениями:

Реализуйте задание с использованием функций высшего порядка
Реализуйте с помощью функций высшего порядка. Постарайтесь полностью исключить из определений функций явный проход по списку. Задание: ...

Как представить с использованием функции высшего порядка (APPLY или FUNCALL)
Подскажите пожалуйста как представить с использованием функции высшего порядка(APPLY или FUNCALL). Задание:Список - объединение двух...

[Io] Создание функций высшего порядка
Пытался выяснить как в Io обстоят дела с функциями высшего порядка ( map, foreach, ... ) Конкретно хотел узнать есть ли в Io формальный...

9
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
15.04.2014, 17:24
Среднее:

Haskell
1
2
avg :: [Double] -> Double
avg x = (foldr (\ a y -> a+y) 0.0 x) / (fromIntegral $ length x)
Скалярное произведение:

Haskell
1
2
scalProd :: [Double] -> [Double] -> Double
scalProd x y =  foldr (+) 0.0 (zipWith (*) x y)
Добавлено через 3 минуты
Количество четных:

Haskell
1
2
countEven :: [Int] -> Int
countEven = length . filter even
Добавлено через 4 минуты
Быстрая сортировка:

Haskell
1
2
3
qSort :: Ord a => [a] -> [a]
qSort []     = []
qSort (x:xs) = qSort (filter (< x) xs) ++ [x] ++ qSort (filter (>= x) xs)
Добавлено через 24 минуты
Обобщенная qSort:

Haskell
1
2
3
qSort' :: (a -> a -> Bool) -> [a] -> [a]
qSort' fc []     = []
qSort' fc (x:xs) = qSort' fc (filter (fc x) xs) ++ [x] ++ (qSort' fc (filter (\ y -> not $ fc x y) xs))
Добавлено через 8 минут
Кстати, в одной теме положено задавать один вопрос. В следующий раз "лишние" вопросы будут удаляться.
1
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 33
20.04.2014, 16:15  [ТС]
вновь символ $. для чего он здесь?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
20.04.2014, 17:10
Цитата Сообщение от Александр1115 Посмотреть сообщение
для чего он здесь?
- для экономии скобок
0
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 33
23.04.2014, 17:40  [ТС]
Помогите с определением обобщённой qSort. В качестве входных данных мы задаём ещё один список?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
23.04.2014, 18:02
Вопрос непонятен... Обобщенная qSort (как и обычная) сортирует один список. Где ты нашел еще один?
0
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 33
23.04.2014, 21:31  [ТС]
Что нужно вводить в консоль?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
23.04.2014, 23:00
Сначала загрузить из файла определение нужной функции, а потом взывать ее с какими либо параметрами.
0
2 / 2 / 0
Регистрация: 24.11.2013
Сообщений: 33
24.04.2014, 20:01  [ТС]
вызываем функцию qSort', но что передаём в качестве параметров? Как я понял, вводим а и переменную типа Bool. Верно?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
24.04.2014, 20:37
Цитата Сообщение от Александр1115 Посмотреть сообщение
Верно?
- нет. Первый параметр qSort' - это функция сравнения, принимающая два аргумента, и возвращающая булевское значение. Смотри:

Haskell
1
2
3
4
5
6
7
8
Main> qSort' (>) ["as","jhj","aa","tr"] -- сортировка массива строк по возрастанию
["aa","as","jhj","tr"]
Main> qSort' (<) ["as","jhj","aa","tr"] -- сортировка массива строк по убыванию
["tr","jhj","as","aa"]
Main> qSort' (\ x y -> (length x) < (length y)) ["as","jhj","aa","trrr"] -- сортировка массива строк по убыванию длин 
["trrr","jhj","as","aa"]
Main> qSort' (\ x y -> (length x) > (length y)) ["as","jhj","aa","trrr"] -- сортировка массива строк по возрастанию длин
["as","aa","jhj","trrr"]
Вот что такое универсальность!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2014, 20:37
Помогаю со студенческими работами здесь

Запуск функций высшего порядка
Не могу запустить функции высшего порядка data Note a b = BDate a (b,b,b) | Phone a b | Meet (b,b,b) a deriving (Show, Eq) book :: ...

Реализовать с помощью функций высшего порядка
За время учебы в семестре студенты должны сдать определенное количество лабораторных работ, расчетно-графических зданий и рефератов....

Переписать без использования функций высшего порядка
Класс в объектно-ориентированном языке содержит набор методов (в данной работе будем игнорировать поля-данные класса). Кроме того, он может...

Работа со списками, использование функций высшего порядка
Доброго времени суток, уважаемые обитатели форума :) Задание такое: определить функцию высшего порядка для решения задачи: Список...

Функции высшего порядка
Задание: Функция area, возвращающая площадь фигуры. Для текстового поля площадь зависит от высоты и ширины буквы в шрифте. Поскольку...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru