2014-12-29 9 views
5

Questo tipo potrebbe esserePerché non esiste un tipo "elenco non vuoto" nelle librerie di base Haskell?

data NonEmptyList a = NEL a [a] 

Le funzioni head, tail, e altri diventeranno metodi di una nuova creazione Listable classe del tipo. Alcune funzioni possono già essere inserite in una classe di tipi esistente (mappe/pieghe/attraversamenti/monadi).

Perché un tipo di questo tipo non fa parte della libreria standard Haskell?

+0

Come vuoi creare un'istanza di quel tipo? – Gabe

+5

Puoi trovare liste non vuote nel pacchetto ['semigruppi'] (http://hackage.haskell.org/package/semigroups-0.16.0.1/docs/Data-List-NonEmpty.html). – gallais

risposta

9

L'elenco dei pacchetti che definiscono un tale tipo è di per sé piuttosto non vuota: ci sono almeno sei di loro:

Il Haskell Wiki ha un intero page sulle liste non vuote.

La tua domanda: perché sono liste non vuote non nel pacchetto base è più difficile rispondere. Ma il tipo è un'istanza di molte classi utili dalla base (Foldable, Zip), quindi i meccanismi per utilizzarli sono già disponibili e per utilizzarlo è sufficiente un numero limitato di definizioni di istanza.

+0

puoi fornire un esempio e mostrare come NonEmpty è usato? – 4xx

Problemi correlati