215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
1

Сравнение собственных типов

08.12.2016, 06:23. Показов 1054. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задан тип:

Haskell
1
data Soz = Bir | Eki | Ush | Tort | Bes | Alty | Zheti | Segiz | Togiz | On
И необходимо написать функцию
Haskell
1
2
3
cmp:: Soz -> Soz -> -> Ordering
-- задающую порядок
-- Bir < Eki < Ush < Tort < Bes < Alty < Zheti < Segiz < Togiz < On

Как это можно сделать ?
У меня пока такие идеи:

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

Добавлено через 29 минут
Пока сделал операторы сравнения над типом, и исхожу из них
Haskell
1
2
3
4
5
6
instance Eq Soz where
   (==)
   (==) Bir Bir  = True
   (==) Eki Eki = True
-- etc.
   (==) _   _   = False
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2016, 06:23
Ответы с готовыми решениями:

Создание собственных типов
Приветствую :senor: 1. Когда создаешь свой тип в Type, который создал вручную (после строки &quot;{$R...

Конвертирование в bool собственных типов
Здравствуйте! Класс rnode оболочка над указателем для подсчета ссылок. Вот код: class rnode...

Создание собственных типов данных
Я смотрю исходники на гитхаб, там не раз можно встреть записи вида typedef int book; typedef...

Отображение собственных типов в дебагере с++
Раньше под 2010 студией я юзал следующее: (взято отсюда...

5
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,803
Записей в блоге: 9
08.12.2016, 06:33 2
Haskell
1
2
3
4
5
data Soz = Bir | Eki | Ush | Tort | Bes | Alty | Zheti | Segiz | Togiz | On
        deriving(Eq, Ord)
 
cmp:: Soz -> Soz -> Ordering
cmp = compare
Добавлено через 5 минут

Не по теме:

Азербайджанский?

2
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
08.12.2016, 07:42  [ТС] 3

Не по теме:


писал как казахский:D(числительные очень похожи :))



Добавлено через 3 минуты
KolodeznyDiver, а какой при этом порядок будет ?
Точнее, что если будет сказано изменить порядок на другой ?
Например,
Haskell
1
Togiz > On > Bir > Eki > Ush > Tort > Bes > Alty > Zheti > Segiz -- ?
0
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,803
Записей в блоге: 9
08.12.2016, 08:00 4
Цитата Сообщение от Qazan Посмотреть сообщение
а какой при этом порядок будет ?
Последовательно, как записано
Haskell
1
2
3
4
5
6
data Soz = Bir | Eki | Ush | Tort | Bes | Alty | Zheti | Segiz | Togiz | On
        deriving(Eq, Ord, Enum, Show)
 
main :: IO ()
main = do
    print $ map (\x -> (x,fromEnum x)) [Bir .. On]
Цитата Сообщение от Qazan Посмотреть сообщение
что если будет сказано изменить порядок на другой ?
Ну тогда ручками. Можно сделать таблицу перекодировки в целые числа неподряд, а потом сравнивать их.
2
43 / 41 / 8
Регистрация: 17.04.2016
Сообщений: 39
09.12.2016, 23:55 5
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Ну тогда ручками.
Совсем не обязательно. В Data.Ord определен Down, который специально предназначен для обратного порядка

Haskell
1
cmp x y = compare (Down x) (Down y)
0
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,803
Записей в блоге: 9
10.12.2016, 05:22 6
yegorov, ТС привел пример произвольного порядка, не обратного.

Добавлено через 54 минуты
Цитата Сообщение от yegorov Посмотреть сообщение
cmp x y = compare (Down x) (Down y)
Короче
Haskell
1
2
3
4
5
cmp1:: Soz -> Soz -> Ordering
cmp1 x y = compare y x
-- или
cmp2:: Soz -> Soz -> Ordering
cmp2 = flip compare
0
10.12.2016, 05:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2016, 05:22
Помогаю со студенческими работами здесь

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

Цвет собственных типов переменных в C++
Здрасте! Что необходимо сделать, чтобы собственные типы переменных в окне &quot;Код&quot; отображался синим...

Сортировка собственных типов данных
Задача: В соответствии с вариантом нужно реализовать шаблонную функцию (функции) для сортировки....

Передача собственных типов данных
Здравствуйте! Не пойму в чём ошибка.. Передаю контракт данных: public struct ValuesStruct...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru