LINUX.ORG.RU

[haskell] Перебор значений для упорядоченных дискретных типов

 


0

0

Пусть для некого типа а определены

first :: Maybe a

last :: Maybe a

succ :: a -> Maybe а

pred :: а -> Maybe a

Очевидно, что этот тип автоматически реализует Ord и Ix. Непонятно, почему эти определения не включены в Ix?

★★★

Последнее исправление: eugine_kosenko (всего исправлений: 1)

Ведь на их основе легко реализуется range, и наоборот, first, last и range дают succ и pred.

Или эту семантику реализует другой класс?

eugine_kosenko ★★★
() автор топика

И кстати, почему List.iterate не использует «конечный» генератор типа а -> Maybe a, как это определено для того же List.unfoldr?

eugine_kosenko ★★★
() автор топика

Или эту семантику реализует другой класс?

Bounded

Непонятно, почему эти определения не включены в Ix?

Ord is not a superclass of Bounded since types that are not totally ordered may also have upper and lower bounds.

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

Это не совсем то. Bound, как я понял, дает только границы, а тут намного важнее определение succ и pred, которые не только дают полную упорядоченность (Ord), но и (Ix).

eugine_kosenko ★★★
() автор топика
Ответ на: комментарий от jtootf

По сути меня интересует возможность автоматического вывода Ix для перечислений и простых композиций, которая есть «из коробки». Получается, что succ и pred тоже можно выводить автоматически, например, в рамках того же Ix, но почему этого не делается?

eugine_kosenko ★★★
() автор топика

Хех, а правильный ответ на вопрос — класс Enum :-).

eugine_kosenko ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.