Spec-Zone.ru › Haskell 8

Data.List.NonEmpty

Copyright (C) 2011-2015 Edward Kmett
(C) 2010 Tony Morris Oliver Taylor Eelis van der Weegen
License BSD-style (see the file LICENSE)
Maintainer libraries@haskell.org
Stability provisional
Portability portable
Safe Haskell Trustworthy
Language Haskell2010

Содержание

  • Тип непустых потоков
  • Преобразования непустых потоков
  • Основные функции
  • Построение потоков
  • Извлечение подсписков
  • Предикаты подсписков
  • "Множественные" операции
  • Индексация потоков
  • Объединение и разделение потоков
  • Преобразование в список и из списка

Описание

Список NonEmpty — это список, который всегда содержит хотя бы один элемент, но в остальном идентичен традиционному типу списка по сложности и по API. Вам почти наверняка понадобится импортировать этот модуль qualified.

Since: base-4.9.0.0

Тип непустых потоков

data NonEmpty a Source

Непустой (и нестрогий) тип списка.

Since: base-4.9.0.0

Конструкторы

a :| [a] infixr 5
Экземпляры
Подробности о экземплярах
Monad NonEmpty

Since: base-4.9.0.0

Подробности о экземпляре

Определено в GHC.Base

Методы

(>>=) :: NonEmpty a -> (a -> NonEmpty b) -> NonEmpty b Source

(>>) :: NonEmpty a -> NonEmpty b -> NonEmpty b Source

return :: a -> NonEmpty a Source

Functor NonEmpty

Since: base-4.9.0.0

Подробности о экземпляре

Определено в GHC.Base

Методы

fmap :: (a -> b) -> NonEmpty a -> NonEmpty b Source

(<$) :: a -> NonEmpty b -> NonEmpty a Source

MonadFix NonEmpty

Since: base-4.9.0.0

Подробности о экземпляре

Определено в Control.Monad.Fix

Методы

mfix :: (a -> NonEmpty a) -> NonEmpty a Source

Applicative NonEmpty

Since: base-4.9.0.0

Подробности о экземпляре

Определено в GHC.Base

Методы

pure :: a -> NonEmpty a Source

(<*>) :: NonEmpty (a -> b) -> NonEmpty a -> NonEmpty b Source

liftA2 :: (a -> b -> c) -> NonEmpty a -> NonEmpty b -> NonEmpty c Source

(*>) :: NonEmpty a -> NonEmpty b -> NonEmpty b Source

(<*) :: NonEmpty a -> NonEmpty b -> NonEmpty a Source

Foldable NonEmpty

Since: base-4.9.0.0

Подробности экземпляра

Определено в Data.Foldable

Методы

fold :: Monoid m => NonEmpty m -> m Исходный код

foldMap :: Monoid m => (a -> m) -> NonEmpty a -> m Исходный код

foldMap' :: Monoid m => (a -> m) -> NonEmpty a -> m Исходный код

foldr :: (a -> b -> b) -> b -> NonEmpty a -> b Исходный код

foldr' :: (a -> b -> b) -> b -> NonEmpty a -> b Исходный код

foldl :: (b -> a -> b) -> b -> NonEmpty a -> b Исходный код

foldl' :: (b -> a -> b) -> b -> NonEmpty a -> b Исходный код

foldr1 :: (a -> a -> a) -> NonEmpty a -> a Исходный код

foldl1 :: (a -> a -> a) -> NonEmpty a -> a Исходный код

toList :: NonEmpty a -> [a] Исходный код

null :: NonEmpty a -> Bool Исходный код

length :: NonEmpty a -> Int Исходный код

elem :: Eq a => a -> NonEmpty a -> Bool Исходный код

maximum :: Ord a => NonEmpty a -> a Исходный код

minimum :: Ord a => NonEmpty a -> a Исходный код

sum :: Num a => NonEmpty a -> a Исходный код

product :: Num a => NonEmpty a -> a Исходный код

Traversable NonEmpty

С момента: base-4.9.0.0

Подробности экземпляра

Определено в Data.Traversable

Методы

traverse :: Applicative f => (a -> f b) -> NonEmpty a -> f (NonEmpty b) Исходный код

sequenceA :: Applicative f => NonEmpty (f a) -> f (NonEmpty a) Исходный код

mapM :: Monad m => (a -> m b) -> NonEmpty a -> m (NonEmpty b) Исходный код

sequence :: Monad m => NonEmpty (m a) -> m (NonEmpty a) Исходный код

MonadZip NonEmpty

С момента: base-4.9.0.0

Подробности экземпляра

Определено в Control.Monad.Zip

Методы

mzip :: NonEmpty a -> NonEmpty b -> NonEmpty (a, b) Исходный код

mzipWith :: (a -> b -> c) -> NonEmpty a -> NonEmpty b -> NonEmpty c Исходный код

munzip :: NonEmpty (a, b) -> (NonEmpty a, NonEmpty b) Исходный код

Show1 NonEmpty

С момента: base-4.10.0.0

Подробности экземпляра

Определено в Data.Functor.Classes

Методы

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> NonEmpty a -> ShowS Исходный код

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [NonEmpty a] -> ShowS Исходный код

Read1 NonEmpty

С момента: base-4.10.0.0

Подробности экземпляра

Определено в Data.Functor.Classes

Методы

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (NonEmpty a) Исходный код

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [NonEmpty a] Исходный код

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (NonEmpty a) Исходный код

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [NonEmpty a] Исходный код

Ord1 NonEmpty

С момента: base-4.10.0.0

Подробности экземпляра

Определено в Data.Functor.Classes

Методы

liftCompare :: (a -> b -> Ordering) -> NonEmpty a -> NonEmpty b -> Ordering Исходный код

Eq a => Eq (NonEmpty a)

С момента: base-4.9.0.0

Подробности экземпляра

Определено в GHC.Base

Методы

(==) :: NonEmpty a -> NonEmpty a -> Bool Исходный код

(/=) :: NonEmpty a -> NonEmpty a -> Bool Исходный код

Data a => Data (NonEmpty a)

С момента: base-4.9.0.0

Instance details

Определено в Data.Data

Методы

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NonEmpty a -> c (NonEmpty a) Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NonEmpty a) Source

toConstr :: NonEmpty a -> Constr Source

dataTypeOf :: NonEmpty a -> DataType Source

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NonEmpty a)) Source

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NonEmpty a)) Source

gmapT :: (forall b. Data b => b -> b) -> NonEmpty a -> NonEmpty a Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NonEmpty a -> r Source

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NonEmpty a -> r Source

gmapQ :: (forall d. Data d => d -> u) -> NonEmpty a -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> NonEmpty a -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Source

Ord a => Ord (NonEmpty a)

С версии: base-4.9.0.0

Instance details

Определено в GHC.Base

Методы

compare :: NonEmpty a -> NonEmpty a -> Ordering Source

(<) :: NonEmpty a -> NonEmpty a -> Bool Source

(<=) :: NonEmpty a -> NonEmpty a -> Bool Source

(>) :: NonEmpty a -> NonEmpty a -> Bool Source

(>=) :: NonEmpty a -> NonEmpty a -> Bool Source

max :: NonEmpty a -> NonEmpty a -> NonEmpty a Source

min :: NonEmpty a -> NonEmpty a -> NonEmpty a Source

Read a => Read (NonEmpty a)

С версии: base-4.11.0.0

Детали экземпляра

Определено в GHC.Read

Методы

readsPrec :: Int -> ReadS (NonEmpty a) Исходный код

readList :: ReadS [NonEmpty a] Исходный код

readPrec :: ReadPrec (NonEmpty a) Исходный код

readListPrec :: ReadPrec [NonEmpty a] Исходный код

Show a => Show (NonEmpty a)

С момента: base-4.11.0.0

Детали экземпляра

Определено в GHC.Show

Методы

showsPrec :: Int -> NonEmpty a -> ShowS Исходный код

show :: NonEmpty a -> String Исходный код

showList :: [NonEmpty a] -> ShowS Исходный код

Generic (NonEmpty a)

С момента: base-4.6.0.0

Детали экземпляра

Определено в GHC.Generics

Связанные типы

type Rep (NonEmpty a) :: Type -> Type Исходный код

Методы

from :: NonEmpty a -> Rep (NonEmpty a) x Исходный код

to :: Rep (NonEmpty a) x -> NonEmpty a Исходный код

Semigroup (NonEmpty a)

С момента: base-4.9.0.0

Детали экземпляра

Определено в GHC.Base

Методы

(<>) :: NonEmpty a -> NonEmpty a -> NonEmpty a Исходный код

sconcat :: NonEmpty (NonEmpty a) -> NonEmpty a Исходный код

stimes :: Integral b => b -> NonEmpty a -> NonEmpty a Исходный код

Generic1 NonEmpty

С момента: base-4.6.0.0

Детали экземпляра

Определено в GHC.Generics

Связанные типы

type Rep1 NonEmpty :: k -> Type Исходный код

Методы

from1 :: forall (a :: k). NonEmpty a -> Rep1 NonEmpty a Исходный код

to1 :: forall (a :: k). Rep1 NonEmpty a -> NonEmpty a Исходный код

type Rep (NonEmpty a)
Детали экземпляра

Определено в GHC.Generics

type Rep (NonEmpty a) = D1 ('MetaData "NonEmpty" "GHC.Base" "base" 'False) (C1 ('MetaCons ":|" ('InfixI 'LeftAssociative 9) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a])))
type Item (NonEmpty a)
Подробности экземпляра

Определено в GHC.Exts

тип Item (NonEmpty a) = a
тип Rep1 NonEmpty
Подробности экземпляра

Определено в GHC.Generics

тип Rep1 NonEmpty = D1 ('MetaData "NonEmpty" "GHC.Base" "base" 'False) (C1 ('MetaCons ":|" ('InfixI 'LeftAssociative 9) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 [])))

Преобразования потоков с непустыми данными

map :: (a -> b) -> NonEmpty a -> NonEmpty b Источник

Применение функции к потоку с непустыми данными.

intersperse :: a -> NonEmpty a -> NonEmpty a Источник

'intersperse x xs' чередует элементы списка с копиями значения x.

intersperse 0 (1 :| [2,3]) == 1 :| [0,2,0,3]

scanl :: Foldable f => (b -> a -> b) -> b -> f a -> NonEmpty b Источник

scanl аналогично foldl, но возвращает поток последовательных результирующих значений слева:

scanl f z [x1, x2, ...] == z :| [z `f` x1, (z `f` x1) `f` x2, ...]

Обратите внимание, что

last (scanl f z xs) == foldl f z xs.

scanr :: Foldable f => (a -> b -> b) -> b -> f a -> NonEmpty b Источник

scanr является правым дуалом scanl. Обратите внимание, что

head (scanr f z xs) == foldr f z xs.

scanl1 :: (a -> a -> a) -> NonEmpty a -> NonEmpty a Источник

scanl1 — это вариант scanl, у которого нет аргумента начального значения.

scanl1 f [x1, x2, ...] == x1 :| [x1 `f` x2, x1 `f` (x2 `f` x3), ...]

scanr1 :: (a -> a -> a) -> NonEmpty a -> NonEmpty a Источник

scanr1 — это вариант scanr, у которого нет аргумента начального значения.

transpose :: NonEmpty (NonEmpty a) -> NonEmpty (NonEmpty a) Источник

transpose для NonEmpty, ведет себя так же, как transpose. Строки/столбцы могут иметь различную длину, в этом случае > transpose . transpose /= id

sortBy :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a Источник

sortBy для NonEmpty, ведет себя так же, как sortBy

sortWith :: Ord o => (a -> o) -> NonEmpty a -> NonEmpty a Источник

sortWith для NonEmpty, ведет себя так же, как:

sortBy . comparing

Основные функции

length :: NonEmpty a -> Int Источник

Количество элементов в списке с непустыми данными.

head :: NonEmpty a -> a Источник

Извлечение первого элемента потока.

tail :: NonEmpty a -> [a] Источник

Извлечение, возможно, пустого хвоста потока.

last :: NonEmpty a -> a Источник

Извлечение последнего элемента потока.

init :: NonEmpty a -> [a] Источник

Извлечение всех элементов, кроме последнего, из потока.

(<|) :: a -> NonEmpty a -> NonEmpty a infixr 5 Источник

Добавление элемента в начало потока.

cons :: a -> NonEmpty a -> NonEmpty a Источник

Синоним для <|.

uncons :: NonEmpty a -> (a, Maybe (NonEmpty a)) Источник

uncons возвращает первый элемент потока и поток оставшихся элементов, если таковые имеются.

unfoldr :: (a -> (b, Maybe a)) -> a -> NonEmpty b Источник

Функция unfoldr аналогична операции unfoldr из Data.List.

sort :: Ord a => NonEmpty a -> NonEmpty a Source

Сортировать поток.

reverse :: NonEmpty a -> NonEmpty a Source

reverse конечный поток NonEmpty.

inits :: Foldable f => f a -> NonEmpty [a] Source

Функция inits принимает поток xs и возвращает все конечные префиксы xs.

tails :: Foldable f => f a -> NonEmpty [a] Source

Функция tails принимает поток xs и возвращает все суффиксы xs.

Создание потоков

iterate :: (a -> a) -> a -> NonEmpty a Source

iterate f x генерирует бесконечную последовательность повторных применений f к x.

iterate f x = x :| [f x, f (f x), ..]

repeat :: a -> NonEmpty a Source

repeat x возвращает постоянный поток, где все элементы равны x.

cycle :: NonEmpty a -> NonEmpty a Source

cycle xs возвращает бесконечное повторение xs:

cycle (1 :| [2,3]) = 1 :| [2,3,1,2,3,...]

unfold :: (a -> (b, Maybe a)) -> a -> NonEmpty b Source

Устарело: используйте unfoldr

unfold создаёт новый поток, многократно применяя функцию разворачивания к начальному значению для создания элемента типа b и нового начального значения. Когда функция разворачивания возвращает Nothing, вместо нового начального значения, поток заканчивается.

insert :: (Foldable f, Ord a) => a -> f a -> NonEmpty a Source

insert x xs вставляет x в последнюю позицию в xs, где оно всё ещё меньше или равно следующему элементу. В частности, если список предварительно отсортирован, результат также будет отсортирован.

some1 :: Alternative f => f a -> f (NonEmpty a) Source

some1 x последовательно выполняет x один или несколько раз.

Извлечение подсписков

take :: Int -> NonEmpty a -> [a] Source

take n xs возвращает первые n элементов xs.

drop :: Int -> NonEmpty a -> [a] Source

drop n xs отбрасывает первые n элементы с начала последовательности xs.

splitAt :: Int -> NonEmpty a -> ([a], [a]) Source

splitAt n xs возвращает пару, состоящую из префикса xs длины n и оставшегося потока, непосредственно следующего за этим префиксом.

'splitAt' n xs == ('take' n xs, 'drop' n xs)
xs == ys ++ zs where (ys, zs) = 'splitAt' n xs

takeWhile :: (a -> Bool) -> NonEmpty a -> [a] Source

takeWhile p xs возвращает наибольший префикс потока xs, для которого предикат p выполняется.

dropWhile :: (a -> Bool) -> NonEmpty a -> [a] Source

dropWhile p xs возвращает суффикс, оставшийся после takeWhile p xs.

span :: (a -> Bool) -> NonEmpty a -> ([a], [a]) Source

span p xs возвращает наибольший префикс xs, удовлетворяющий p, вместе с остатком потока.

'span' p xs == ('takeWhile' p xs, 'dropWhile' p xs)
xs == ys ++ zs where (ys, zs) = 'span' p xs

break :: (a -> Bool) -> NonEmpty a -> ([a], [a]) Source

Функция break p эквивалентна span (not . p).

filter :: (a -> Bool) -> NonEmpty a -> [a] Source

filter p xs удаляет из xs любые элементы, которые не удовлетворяют p.

partition :: (a -> Bool) -> NonEmpty a -> ([a], [a]) Source

Функция partition принимает предикат p и поток xs, и возвращает пару списков. Первый список соответствует элементам xs, для которых выполняется p; второй соответствует элементам xs, для которых p не выполняется.

'partition' p xs = ('filter' p xs, 'filter' (not . p) xs)

group :: (Foldable f, Eq a) => f a -> [NonEmpty a] Source

Функция group принимает поток и возвращает список потоков, такой, что уплощение полученного списка равно аргументу. Кроме того, каждый поток в результирующем списке содержит только равные элементы. Например, в обозначении списков:

'group' $ 'cycle' "Mississippi"
  = "M" : "i" : "ss" : "i" : "ss" : "i" : "pp" : "i" : "M" : "i" : ...

groupBy :: Foldable f => (a -> a -> Bool) -> f a -> [NonEmpty a] Source

groupBy работает так же, как group, но вместо == использует предоставленный предикат равенства.

groupWith :: (Foldable f, Eq b) => (a -> b) -> f a -> [НепустойСписок a] Источник

groupWith работает подобно group, но использует предоставленное отображение при сравнении на равенство

groupAllWith :: Ord b => (a -> b) -> [a] -> [НепустойСписок a] Источник

groupAllWith работает подобно groupWith, но сначала сортирует список, чтобы в выходных данных каждая группа эквивалентности содержала не более одного списка

group1 :: Eq a => НепустойСписок a -> НепустойСписок (НепустойСписок a) Источник

group1 работает подобно group, но использует знание о том, что входной список непустой, для гарантированного получения непустого результата.

groupBy1 :: (a -> a -> Булево) -> НепустойСписок a -> НепустойСписок (НепустойСписок a) Источник

groupBy1 относится к group1 так же, как groupBy относится к group.

groupWith1 :: Eq b => (a -> b) -> НепустойСписок a -> НепустойСписок (НепустойСписок a) Источник

groupWith1 относится к group1 так же, как groupWith относится к group

groupAllWith1 :: Ord b => (a -> b) -> НепустойСписок a -> НепустойСписок (НепустойСписок a) Источник

groupAllWith1 относится к groupWith1 так же, как groupAllWith относится к groupWith

Предикаты подсписков

isPrefixOf :: Eq a => [a] -> НепустойСписок a -> Булево Источник

Функция isPrefixOf возвращает True, если первый аргумент является префиксом второго.

Операции "множества"

nub :: Eq a => НепустойСписок a -> НепустойСписок a Источник

Функция nub удаляет дубликаты из списка. В частности, она оставляет только первое вхождение каждого элемента. (Название nub означает "сущность".) Это частный случай nubBy, который позволяет программисту указать собственное условие неравенства.

nubBy :: (a -> a -> Булево) -> НепустойСписок a -> НепустойСписок a Источник

Функция nubBy ведет себя точно так же, как nub, за исключением того, что она использует предоставленное пользователем предикат равенства вместо перегруженной функции ==.

Индексирование потоков

(!!) :: НепустойСписок a -> Целое -> a infixl 9 Источник

xs !! n возвращает элемент потока xs с индексом n. Обратите внимание, что у первого элемента потока индекс 0.

Предупреждение: отрицательный или вне диапазона индекс приведет к ошибке.

Объединение и разбиение потоков

zip :: НепустойСписок a -> НепустойСписок b -> НепустойСписок (a, b) Источник

Функция zip принимает два потока и возвращает поток соответствующих пар.

zipWith :: (a -> b -> c) -> НепустойСписок a -> НепустойСписок b -> НепустойСписок c Источник

Функция zipWith обобщает zip. Вместо создания кортежей элементы комбинируются с помощью функции, переданной в качестве первого аргумента.

unzip :: Функтор f => f (a, b) -> (f a, f b) Источник

Функция unzip является обратной функцией zip.

Преобразование в список и обратно

fromList :: [a] -> НепустойСписок a Источник

Преобразует обычный список в поток NonEmpty.

Вызывает ошибку, если входной список пуст.

toList :: НепустойСписок a -> [a] Источник

Эффективно преобразует поток в обычный список.

nonEmpty :: [a] -> Возможность (НепустойСписок a) Источник

nonEmpty эффективно преобразует обычный список в поток NonEmpty, возвращая Nothing если входной список пуст.

xor :: НепустойСписок Булево -> Булево Источник

Вычислить n-арную логическую операцию исключающего ИЛИ над списком NonEmpty.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.10.2/docs/html/libraries/base-4.14.1.0/Data-List-NonEmpty.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API