Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
3 / 3 / 2
Регистрация: 10.03.2013
Сообщений: 80

Функции высшего порядка

17.12.2013, 22:34. Показов 2252. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
4. В агентстве недвижимости продают квартиры, комнаты и частные дома. Квартиры характеризуются этажом, площадью, и этажностью дома. Комната характеризуется, помимо этого, площадью комнаты (в дополнение к площади всей квартиры). Частные дома характеризуются только площадью. В базе данных хранятся пары значений, первое из которых представляет объект недвижимости, а второе – его цену. Определите тип данных, представляющий информацию о таких объектах недвижимости. Определите след. ф-ии:
2) getByPrice, выбирающая из базы данных те объекты недвижимости, цена которых меньше указанных

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
data Nedv= Flat{square :: Int, lvl :: Int, top ::  Int} 
          | Room      {square :: Int, totalsquare ::  Int} 
          | House     {square :: Int} 
          deriving Show
type Data = (Nedv, Int)
type Database = [Data]
getByPrice :: Int -> Database -> Database
getByPrice = filter . maxprice
type Requirement = Data -> Bool
flat, house, room :: Requirement
flat ((Flat _ _ _), _) = True
flat _                      = False
room ((Room _ _), _) = True
room _               = False
house ((House _), _) = True
house _              = False
minsquare, maxprice, level :: Int -> Requirement
minsquare s = (s <=) . square . fst
maxprice p = (p >= ) . snd
level l d = flat d && (l == lvl (fst d))
Нужно реализовать с помощью функции высшего порядка
Все ли верно? нет ли лишнего? не реализуется программа(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2013, 22:34
Ответы с готовыми решениями:

Функции высшего порядка
Добрый вечер. Даны пять функций: 1: isStructured, проверяющая, что её аргумент является сложным типом. 2: getType, по заданному...

Функции высшего порядка
Здравствуйте! Помогите, пожалуйста, переделала функции на функции высшего порядка все, кроме одной. Не понимаю, как разобраться с...

Функции высшего порядка
Используя функцию нахождения производной и преобразование Ньютона для нахождения нулей функции реализовать нахождение одного из локальных...

4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
18.12.2013, 19:36
Ищи, это уже делалось. И, по-моему, не раз.

Добавлено через 8 часов 10 минут
Если "никак", то вот:

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
data Nedv= Flat{square :: Int, lvl :: Int, top ::  Int} 
          | Room      {square :: Int, totalsquare ::  Int} 
          | House     {square :: Int} 
          deriving (Show,Eq)
          
type Data = (Nedv, Int)
type Database = [Data]
 
getByPrice :: Database -> Int -> Database
getByPrice db p = filter (\ (n,pp) -> pp < p) db
 
Main> getByPrice [(House 12,100),(House 13,120)] 110
 
[(House{square=12},100)]
Добавлено через 2 минуты
Если чуть изменить интерфейс программы, то можно чуть сэкономить:


Haskell
1
2
3
4
5
6
7
getByPrice :: Int -> Database  -> Database
getByPrice p = filter (\ (n,pp) -> pp < p)
 
 
Main> getByPrice 110 [(House 12,100),(House 13,120)]
 
[(House{square=12},100)]
Добавлено через 1 минуту
Цитата Сообщение от MariaK Посмотреть сообщение
нет ли лишнего?
- как видишь, есть...
0
3 / 3 / 2
Регистрация: 10.03.2013
Сообщений: 80
18.12.2013, 22:26  [ТС]
Спасибо большое!
0
3 / 3 / 2
Регистрация: 10.03.2013
Сообщений: 80
25.12.2013, 10:47  [ТС]
getByPrice db p = filter (\ (n,pp) -> pp < p) db
Поясните пожалуйста, эту строчку

Добавлено через 32 секунды
getByPrice db p = filter (\ (n,pp) -> pp < p) db

поясните пожалуйста эту строчку
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
25.12.2013, 12:05
Haskell
1
getByPrice db p = filter (\ (n,pp) -> pp < p) db
Функция getByPrice принимает два аргумента - базу недвижимости (db) и граничную цену (p). База недвижимости является списком, поэтому для отбора элементов по критерию можно использовать ФВП filter. Функция filter принимает функцию-предикат (возвращающую логическое значение) и список. Действие filter заключается в том, что предикат применяется к каждому элементу списка, если значение предиката True, то элемент попадает в выходной список. В качестве предиката мы используем безымянную функцию, которая берет очередной элемент списка - кортеж вида (объект,цена) и возвращает True, если цена < граничной цены (p).

Таким образом в результате будет создан список объектов недвижимости с ценой, меньшей заданной.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.12.2013, 12:05
Помогаю со студенческими работами здесь

Функции высшего порядка
Здравствуйте! Прошу вашей помощи:) Есть программа. Ее нужно изменить так, чтобы в ней не применялась функция map, которая преобразует...

Функции высшего порядка
Второе задание lab5.pdf. Вернитесь к заданиям из лабораторной работы №3 и реализуйте их с помощью функций высшего порядка....

Функции высшего порядка
Всем доброго вечера :) По заданному имени и списку идентификаторов (базе данных) возвращающая тип идентификатора с указанным именем ...

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

Функции высшего порядка
--!Функции: AREA, getRectangles, getBound, getBounds, getFigure, move - реализовать С ПОМОЩЬЮ ФУНКЦИЙ ВЫСШЕГО ПОРЯДКА. Кто-нибудь помогите...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru