Spec-Zone.ru › Haskell 9

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.

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

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

data NonEmpty a Source

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

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

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

a :| [a] infixr 5
Примеры использования
Подробности примеров использования
Foldable1 NonEmpty Исходный код

С версии: base-4.18.0.0

Подробности примера

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

Методы

fold1 :: Semigroup m => NonEmpty m -> m Исходный код

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

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

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

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

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

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

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

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

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

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

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

Eq1 NonEmpty Исходный код

С версии: base-4.10.0.0

Подробности примера

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

Методы

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

Ord1 NonEmpty Исходный код

С версии: base-4.10.0.0

Подробности примера

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

Методы

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

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] Исходный код

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 Источник

Applicative NonEmpty Источник

С тех пор как: base-4.9.0.0

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

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

Методы

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

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

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

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

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

Functor NonEmpty Источник

С тех пор как: base-4.9.0.0

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

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

Методы

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

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

Monad NonEmpty Источник

С тех пор как: base-4.9.0.0

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

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

Методы

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

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

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

MonadFix NonEmpty Источник

С тех пор как: base-4.9.0.0

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

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

Методы

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

MonadZip NonEmpty Источник

С тех пор как: ghc-internal-4.9.0.0

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

Определено в GHC.Internal.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) Источник

Foldable NonEmpty Source

Since: base-4.9.0.0

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

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

Методы

fold :: Monoid m => NonEmpty m -> m Source

foldMap :: Monoid m => (a -> m) -> NonEmpty a -> m Source

foldMap' :: Monoid m => (a -> m) -> NonEmpty a -> m Source

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

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

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

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

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

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

toList :: NonEmpty a -> [a] Source

null :: NonEmpty a -> Bool Source

length :: NonEmpty a -> Int Source

elem :: Eq a => a -> NonEmpty a -> Bool Source

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

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

sum :: Num a => NonEmpty a -> a Source

product :: Num a => NonEmpty a -> a Source

Traversable NonEmpty Source

Since: base-4.9.0.0

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

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

Методы

traverse :: Applicative f => (a -> f b) -> NonEmpty a -> f (NonEmpty b) Source

sequenceA :: Applicative f => NonEmpty (f a) -> f (NonEmpty a) Source

mapM :: Monad m => (a -> m b) -> NonEmpty a -> m (NonEmpty b) Source

sequence :: Monad m => NonEmpty (m a) -> m (NonEmpty a) Source

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

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

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

type Rep1 NonEmpty

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

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

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

type Rep1 NonEmpty = D1 ('MetaData "NonEmpty" "GHC.Internal.Base" "ghc-internal" 'False) (C1 ('MetaCons ":|" ('InfixI 'RightAssociative 5) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 [])))

Методы

from1 :: NonEmpty a -> Rep1 NonEmpty a Исходный код

to1 :: Rep1 NonEmpty a -> NonEmpty a Исходный код

Lift a => Lift (NonEmpty a :: Тип) Исходный код

С момента: template-haskell-2.15.0.0

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

Определено в GHC.Internal.TH.Lift

Методы

lift :: Quote m => NonEmpty a -> m Exp Исходный код

liftTyped :: forall (m :: Тип -> Тип). Quote m => NonEmpty a -> Код m (NonEmpty a) Исходный код

Semigroup (NonEmpty a) Исходный код

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

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

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

Методы

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

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

stimes :: Целочисленный b => b -> NonEmpty a -> NonEmpty a Исходный код

Data a => Data (NonEmpty a) Исходный код

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

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

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

Методы

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NonEmpty a -> c (NonEmpty a) Исходный код

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NonEmpty a) Исходный код

toConstr :: NonEmpty a -> Constr Исходный код

dataTypeOf :: NonEmpty a -> DataType Исходный код

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NonEmpty a)) Исходный код

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NonEmpty a)) Исходный код

gmapT :: (forall b. Data b => b -> b) -> NonEmpty a -> NonEmpty a Исходный код

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NonEmpty a -> r Исходный код

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NonEmpty a -> r Исходный код

gmapQ :: (forall d. Data d => d -> u) -> NonEmpty a -> [u] Исходный код

gmapQi :: Int -> (forall d. Data d => d -> u) -> NonEmpty a -> u Исходный код

gmapM :: Monad m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Исходный код

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Исходный код

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Исходный код

Generic (NonEmpty a) Исходный код
Подробности экземпляра

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

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

type Rep (NonEmpty a)

С: base-4.6.0.0

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

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

type Rep (NonEmpty a) = D1 ('MetaData "NonEmpty" "GHC.Internal.Base" "ghc-internal" 'False) (C1 ('MetaCons ":|" ('InfixI 'RightAssociative 5) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [a])))

Методы

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

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

IsList (NonEmpty a) Source

Since: base-4.9.0.0

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

Определено в GHC.Internal.IsList

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

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

Определено в GHC.Internal.IsList

type Item (NonEmpty a) = a

Методы

fromList :: [Item (NonEmpty a)] -> NonEmpty a Source

fromListN :: Int -> [Item (NonEmpty a)] -> NonEmpty a Source

toList :: NonEmpty a -> [Item (NonEmpty a)] Source

Read a => Read (NonEmpty a) Source

Since: base-4.11.0.0

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

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

Методы

readsPrec :: Int -> ReadS (NonEmpty a) Source

readList :: ReadS [NonEmpty a] Source

readPrec :: ReadPrec (NonEmpty a) Source

readListPrec :: ReadPrec [NonEmpty a] Source

Show a => Show (NonEmpty a) Source

Since: base-4.11.0.0

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

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

Методы

showsPrec :: Int -> NonEmpty a -> ShowS Source

show :: NonEmpty a -> String Source

showList :: [NonEmpty a] -> ShowS Source

Eq a => Eq (NonEmpty a) Source

Since: base-4.9.0.0

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

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

Методы

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

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

Ord a => Ord (NonEmpty a) Source

Since: base-4.9.0.0

Сведения об экземпляре

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

Методы

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

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

(<=) :: NonEmpty a -> NonEmpty a -> Bool Источник

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

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

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

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

type Rep1 NonEmpty Источник

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

Сведения об экземпляре

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

type Rep1 NonEmpty = D1 ('MetaData "NonEmpty" "GHC.Internal.Base" "ghc-internal" 'False) (C1 ('MetaCons ":|" ('InfixI 'RightAssociative 5) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 [])))
type Rep (NonEmpty a) Источник

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

Сведения об экземпляре

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

type Rep (NonEmpty a) = D1 ('MetaData "NonEmpty" "GHC.Internal.Base" "ghc-internal" 'False) (C1 ('MetaCons ":|" ('InfixI 'RightAssociative 5) '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.Internal.IsList

type Item (NonEmpty a) = a

Преобразования потоков, не содержащих пустоты

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 Source

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

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

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

scanl1 является вариантом scanl, не имеющим аргумента начального значения:

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

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

scanr1 является вариантом scanr, не имеющим аргумента начального значения.

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

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

sortBy :: (a -> a -> Ordering) -> NonEmpty a -> NonEmpty a Source

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

sortWith :: Ord o => (a -> o) -> NonEmpty a -> NonEmpty a Source

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

sortBy . comparing

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

length :: NonEmpty a -> Int Source

Количество элементов в списке NonEmpty.

compareLength :: NonEmpty a -> Int -> Ordering Source

Используйте compareLength xs n в качестве более безопасной и быстрой альтернативы compare (length xs) n. Аналогично, лучше писать compareLength xs 10 == LT вместо length xs < 10.

В то время как length будет вынуждено пройти и пройти весь позвоночник xs (что может даже разойтись, если xs бесконечно), compareLength проходит не более n элементов для определения своего результата.

>>> compareLength ('a' :| []) 1
EQ
>>> compareLength ('a' :| ['b']) 3
LT
>>> compareLength (0 :| [1..]) 100
GT
>>> compareLength undefined 0
GT
>>> compareLength ('a' :| 'b' : undefined) 1
GT

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

head :: NonEmpty a -> a Source

Извлечь первый элемент потока.

tail :: NonEmpty a -> [a] Source

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

last :: NonEmpty a -> a Source

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

init :: NonEmpty a -> [a] Source

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

singleton :: a -> NonEmpty a Source

Построить список NonEmpty из одного элемента.

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

(<|) :: a -> NonEmpty a -> NonEmpty a infixr 5 Source

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

cons :: a -> NonEmpty a -> NonEmpty a Source

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

uncons :: NonEmpty a -> (a, Maybe (NonEmpty a)) Source

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

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

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

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

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

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

Сортировать NonEmpty по заданной проекцией его элементов. См. sortOn для получения более подробной информации.

Примеры
Развернуть
>>> sortOn fst $ (2, "world") :| [(4, "!"), (1, "Hello")]
(1,"Hello") :| [(2,"world"),(4,"!")]
>>> sortOn List.length ("jim" :| ["creed", "pam", "michael", "dwight", "kevin"])
"jim" :| ["pam","creed","kevin","dwight","michael"]
Примечания по производительности
Развернуть

Эта функция сводит к минимуму выполняемые проекции, материализуя проекции в промежуточном списке.

Для тривиальных проекций вы должны отдавать предпочтение использованию sortBy с comparing, например:

>>> sortBy (comparing fst) $ (3, 1) :| [(2, 2), (1, 3)]
(1,3) :| [(2,2),(3,1)]

Или, для точно такого же API, как sortOn, вы можете использовать `sortBy . comparing`:

>>> (sortBy . comparing) fst $ (3, 1) :| [(2, 2), (1, 3)]
(1,3) :| [(2,2),(3,1)]

sortWith - это псевдоним для `sortBy . comparing`.

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

reverse :: NonEmpty a -> NonEmpty a Source

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

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

Функция inits принимает поток xs и возвращает все конечные префиксы xs, начиная с самого короткого. Результат является NonEmpty, потому что результат всегда содержит пустой список в качестве первого элемента.

inits [1,2,3] == [] :| [[1], [1,2], [1,2,3]]
inits [1] == [] :| [[1]]
inits [] == [] :| []

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

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

inits1 (1 :| [2,3]) == (1 :| []) :| [1 :| [2], 1 :| [2,3]]
inits1 (1 :| []) == (1 :| []) :| []

Since: base-4.18

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

Функция tails принимает поток xs и возвращает все суффиксы xs, начиная с самого длинного. Результат является NonEmpty, потому что результат всегда содержит пустой список в качестве последнего элемента.

tails [1,2,3] == [1,2,3] :| [[2,3], [3], []]
tails [1] == [1] :| [[]]
tails [] == [] :| []

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

Функция tails1 принимает NonEmpty поток xs и возвращает все непустые суффиксы xs, начиная с самого длинного.

tails1 (1 :| [2,3]) == (1 :| [2,3]) :| [2 :| [3], 3 :| []]
tails1 (1 :| []) == (1 :| []) :| []

Since: base-4.18

append :: NonEmpty a -> NonEmpty a -> NonEmpty a Source

Мономорфная версия <> для NonEmpty.

>>> append (1 :| []) (2 :| [3])
1 :| [2,3]

Since: base-4.16

appendList :: NonEmpty a -> [a] -> NonEmpty a Source

Присоединить список к концу NonEmpty.

>>> appendList (1 :| [2,3]) []
1 :| [2,3]
>>> appendList (1 :| [2,3]) [4,5]
1 :| [2,3,4,5]

Since: base-4.16

prependList :: [a] -> NonEmpty a -> NonEmpty a Source

Присоединить список к началу NonEmpty.

>>> prependList [] (1 :| [2,3])
1 :| [2,3]
>>> prependList [negate 1, 0] (1 :| [2, 3])
-1 :| [0,1,2,3]

Since: base-4.16

Построение потоков

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

Deprecated: Use 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 "Mississippi"
['M' :| "",'i' :| "",'s' :| "s",'i' :| "",'s' :| "s",'i' :| "",'p' :| "p",'i' :| ""]

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

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

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

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

groupAllWith :: Ord b => (a -> b) -> [a] -> [NonEmpty a] Source

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

group1 :: Eq a => NonEmpty a -> NonEmpty (NonEmpty a) Source

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

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

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

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

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

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

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

permutations :: [a] -> NonEmpty [a] Source

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

Since: base-4.20.0.0

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

permutations1 работает так же, как permutations, но использует знание о том, что вход непустой, чтобы получить выход, где каждый элемент непустой.

permutations1 = fmap fromList . permutations . toList

Since: base-4.20.0.0

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

isPrefixOf :: Eq a => [a] -> NonEmpty a -> Bool Source

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

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

nub :: Eq a => NonEmpty a -> NonEmpty a Source

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

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

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

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

(!!) :: HasCallStack => NonEmpty a -> Int -> a infixl 9 Source

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

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

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

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

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

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

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

unzip :: Functor f => f (a, b) -> (f a, f b) Source

Предупреждение: Эта функция будет сделана мономорфной в base-4.22, рассмотрите переход к Data.Functor.unzip

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

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

fromList :: HasCallStack => [a] -> NonEmpty a Источник

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

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

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

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

nonEmpty :: [a] -> Maybe (NonEmpty a) Источник

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

xor :: NonEmpty Bool -> Bool Источник

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

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

Spec-Zone.ru

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