2014-12-29 2 views
5

Этого типа может бытьПочему в базовых библиотеках Haskell нет типа «непустого списка»?

data NonEmptyList a = NEL a [a] 

Функция head, tail, и другие станут методами вновь созданного Listable класса типа. Некоторые функции уже могут вписываться в существующий тип класса (карты/складки/обходы/монады).

Почему такой тип не является частью стандартной библиотеки Haskell?

+0

Как бы вы создать экземпляр этого типа? – Gabe

+5

Вы можете найти непустые списки в пакете ['semigroups'] (http://hackage.haskell.org/package/semigroups-0.16.0.1/docs/Data-List-NonEmpty.html). – gallais

ответ

9

Список пакетов, которые определяют такой тип сам по себе, а непустой: есть, по крайней мере шесть из них:

Haskell Wiki имеет целый page о непустых списков.

Ваш вопрос: Почему - это не пустые списки, не содержащие базовый пакет, сложнее ответить. Но тип является экземпляром многих полезных классов из базы (Foldable, Zip), поэтому механизмы их использования уже есть, и для этого вам нужно всего лишь небольшое количество определений экземпляров.

+0

вы можете привести пример и показать, как используется NonEmpty? – 4xx