Прелюдия
| Copyright | (c) The University of Glasgow 2001 |
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) |
| Maintainer | libraries@haskell.org |
| Stability | stable |
| Portability | portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Описание
Прелюдия: стандартный модуль. Прелюдия импортируется по умолчанию во все модули Haskell, если только нет явного оператора импорта для неё или не включено расширение NoImplicitPrelude.
Стандартные типы, классы и связанные функции
Основные типы данных
Экземпляры
| Bounded Bool | Since: base-2.1 |
| Enum Bool | Since: base-2.1 |
| Eq Bool | |
| Data Bool | Since: base-4.0.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Bool -> c Bool Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Bool Source toConstr :: Bool -> Constr Source dataTypeOf :: Bool -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Bool) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Bool) Source gmapT :: (forall b. Data b => b -> b) -> Bool -> Bool Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Bool -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Bool -> r Source gmapQ :: (forall d. Data d => d -> u) -> Bool -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Bool -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Bool -> m Bool Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Bool -> m Bool Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Bool -> m Bool Source | |
| Ord Bool | |
Defined in Data.Bits МетодыfiniteBitSize :: Bool -> Int Source countLeadingZeros :: Bool -> Int Source countTrailingZeros :: Bool -> Int Source | |
| Bits Bool |
Interpret Since: base-4.7.0.0 |
Defined in Data.Bits Методы(.&.) :: Bool -> Bool -> Bool Source (.|.) :: Bool -> Bool -> Bool Source xor :: Bool -> Bool -> Bool Source complement :: Bool -> Bool Source shift :: Bool -> Int -> Bool Source rotate :: Bool -> Int -> Bool Source setBit :: Bool -> Int -> Bool Source clearBit :: Bool -> Int -> Bool Source complementBit :: Bool -> Int -> Bool Source testBit :: Bool -> Int -> Bool Source bitSizeMaybe :: Bool -> Maybe Int Source isSigned :: Bool -> Bool Source shiftL :: Bool -> Int -> Bool Source unsafeShiftL :: Bool -> Int -> Bool Source shiftR :: Bool -> Int -> Bool Source unsafeShiftR :: Bool -> Int -> Bool Source rotateL :: Bool -> Int -> Bool Source | |
| Storable Bool | Since: base-2.1 |
Определено в Foreign.Storable | |
| type Rep Bool | |
(&&) :: Bool -> Bool -> Bool infixr 3 Source
Булево "и", лениво по второму аргументу
(||) :: Bool -> Bool -> Bool infixr 2 Source
Булево "или", лениво по второму аргументу
Булево "не"
otherwise определяется как значение True. Это помогает сделать охранники более читаемыми. Например:
f x | x < 0 = ...
| otherwise = ...
Тип Maybe инкапсулирует необязательное значение. Значение типа Maybe a либо содержит значение типа a (представленное как Just a), либо оно пусто (представлено как Nothing). Использование Maybe - хороший способ обработки ошибок или исключительных ситуаций без прибегания к таким радикальным мерам, как error.
Тип Maybe также является монадой. Это простой вид монады ошибок, где все ошибки представлены как Nothing. Более богатую монаду ошибок можно построить с использованием типа Either.
Экземпляры
| Monad Maybe | С версии: base-2.1 |
| Functor Maybe | С версии: base-2.1 |
| MonadFix Maybe | С версии: base-2.1 |
Определено в Control.Monad.Fix | |
| MonadFail Maybe | С версии: base-4.9.0.0 |
Определено в Control.Monad.Fail | |
| Applicative Maybe | С версии: base-2.1 |
| Foldable Maybe | С версии: base-2.1 |
Определено в Data.Foldable Методыfold :: Monoid m => Maybe m -> m Source foldMap :: Monoid m => (a -> m) -> Maybe a -> m Source foldMap' :: Monoid m => (a -> m) -> Maybe a -> m Source foldr :: (a -> b -> b) -> b -> Maybe a -> b Source foldr' :: (a -> b -> b) -> b -> Maybe a -> b Source foldl :: (b -> a -> b) -> b -> Maybe a -> b Source foldl' :: (b -> a -> b) -> b -> Maybe a -> b Source foldr1 :: (a -> a -> a) -> Maybe a -> a Source foldl1 :: (a -> a -> a) -> Maybe a -> a Source toList :: Maybe a -> [a] Source null :: Maybe a -> Bool Source length :: Maybe a -> Int Source elem :: Eq a => a -> Maybe a -> Bool Source maximum :: Ord a => Maybe a -> a Source minimum :: Ord a => Maybe a -> a Source | |
| Traversable Maybe | Since: base-2.1 |
| MonadPlus Maybe | Since: base-2.1 |
| Alternative Maybe | Since: base-2.1 |
| MonadZip Maybe | Since: base-4.8.0.0 |
| Show1 Maybe | Since: base-4.9.0.0 |
| Read1 Maybe | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes МетодыliftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Maybe a) Source liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Maybe a] Source liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Maybe a) Source liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Maybe a] Source | |
| Ord1 Maybe | Since: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Eq1 Maybe | Since: base-4.9.0.0 |
| Eq a => Eq (Maybe a) | Since: base-2.1 |
| Data a => Data (Maybe a) | Since: base-4.0.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Maybe a -> c (Maybe a) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Maybe a) Source toConstr :: Maybe a -> Constr Source dataTypeOf :: Maybe a -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Maybe a)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Maybe a)) Source gmapT :: (forall b. Data b => b -> b) -> Maybe a -> Maybe a Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Maybe a -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Maybe a -> r Source gmapQ :: (forall d. Data d => d -> u) -> Maybe a -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Maybe a -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Maybe a -> m (Maybe a) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Maybe a -> m (Maybe a) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Maybe a -> m (Maybe a) Source | |
| Ord a => Ord (Maybe a) | С версии: base-2.1 |
| Read a => Read (Maybe a) | С версии: base-2.1 |
| Show a => Show (Maybe a) | С версии: base-2.1 |
| Generic (Maybe a) | Since: base-4.6.0.0 |
| Semigroup a => Semigroup (Maybe a) | Since: base-4.9.0.0 |
| Semigroup a => Monoid (Maybe a) |
Поднять полугруппу в Since 4.11.0: ограничение на внутреннее Since: base-2.1 |
| Generic1 Maybe | Since: base-4.6.0.0 |
| type Rep (Maybe a) | |
Определено в GHC.Generics | |
| type Rep1 Maybe | |
Определено в GHC.Generics |
maybe :: b -> (a -> b) -> Maybe a -> b Source
Функция maybe принимает значение по умолчанию, функцию и значение Maybe. Если значение Maybe является Nothing, функция возвращает значение по умолчанию. В противном случае она применяет функцию к значению внутри Just и возвращает результат.
Примеры
Базовое использование:
>>> maybe False odd (Just 3) True
>>> maybe False odd Nothing False
Чтение целого числа из строки с использованием readMaybe. Если успешно, вернём удвоенное целое число; то есть, применим к нему (*2). Если же разбор целого числа не удался, вернём по умолчанию 0:
>>> import Text.Read ( readMaybe ) >>> maybe 0 (*2) (readMaybe "5") 10 >>> maybe 0 (*2) (readMaybe "") 0
Применим show к Maybe Int. Если у нас есть Just n, мы хотим показать базовое Int n. Но если у нас Nothing, мы возвращаем пустую строку вместо (например) "Nothing":
>>> maybe "" show (Just 5) "5" >>> maybe "" show Nothing ""
Тип Either представляет значения с двумя возможностями: значение типа Either a b является либо Left a, либо Right b.
Тип Either иногда используется для представления значения, которое является либо корректным, либо ошибочным; по соглашению, конструктор Left используется для хранения значения ошибки, а конструктор Right используется для хранения корректного значения (мнемоника: "right" также означает "correct").
Примеры
Тип Either String Int — это тип значений, которые могут быть либо String, либо Int. Конструктор Left может использоваться только для String, а конструктор Right — только для Int:
>>> let s = Left "foo" :: Either String Int >>> s Left "foo" >>> let n = Right 3 :: Either String Int >>> n Right 3 >>> :type s s :: Either String Int >>> :type n n :: Either String Int
fmap из нашего экземпляра Functor будет игнорировать значения Left, но будет применять предоставленную функцию к значениям, содержащимся в Right:
>>> let s = Left "foo" :: Either String Int >>> let n = Right 3 :: Either String Int >>> fmap (*2) s Left "foo" >>> fmap (*2) n Right 6
Экземпляр Monad для Either позволяет нам объединять несколько действий, которые могут завершиться неудачей, и завершаться неудачей в целом, если какой-либо из отдельных шагов завершился неудачей. Сначала мы напишем функцию, которая может либо разобрать Int из Char, либо завершиться неудачей.
>>> import Data.Char ( digitToInt, isDigit )
>>> :{
let parseEither :: Char -> Either String Int
parseEither c
| isDigit c = Right (digitToInt c)
| otherwise = Left "parse error"
>>> :}
Следующее должно работать, поскольку как '1', так и '2' могут быть разобраны как Int.
>>> :{
let parseMultiple :: Either String Int
parseMultiple = do
x <- parseEither '1'
y <- parseEither '2'
return (x + y)
>>> :}
>>> parseMultiple Right 3
Но следующее должно завершиться общей ошибкой, поскольку первая операция, где мы пытаемся разобрать 'm' как Int, завершится неудачей:
>>> :{
let parseMultiple :: Either String Int
parseMultiple = do
x <- parseEither 'm'
y <- parseEither '2'
return (x + y)
>>> :}
>>> parseMultiple Left "parse error"
Экземпляры
| Show2 Either | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Read2 Either | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes МетодыliftReadsPrec2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> Int -> ReadS (Either a b) Source liftReadList2 :: (Int -> ReadS a) -> ReadS [a] -> (Int -> ReadS b) -> ReadS [b] -> ReadS [Either a b] Source liftReadPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec (Either a b) Source liftReadListPrec2 :: ReadPrec a -> ReadPrec [a] -> ReadPrec b -> ReadPrec [b] -> ReadPrec [Either a b] Source | |
| Ord2 Either | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Eq2 Either | С версии: base-4.9.0.0 |
| Bifunctor Either | С версии: base-4.8.0.0 |
| Bifoldable Either | С версии: base-4.10.0.0 |
| Bitraversable Either | С версии: base-4.10.0.0 |
Определено в Data.Bitraversable Методыbitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> Either a b -> f (Either c d) Source | |
| Monad (Either e) | Since: base-4.4.0.0 |
| Functor (Either a) | Since: base-3.0 |
| MonadFix (Either e) | Since: base-4.3.0.0 |
Определено в Control.Monad.Fix | |
| Applicative (Either e) | Since: base-3.0 |
Определено в Data.Either | |
| Foldable (Either a) | Since: base-4.7.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => Either a m -> m Source foldMap :: Monoid m => (a0 -> m) -> Either a a0 -> m Source foldMap' :: Monoid m => (a0 -> m) -> Either a a0 -> m Source foldr :: (a0 -> b -> b) -> b -> Either a a0 -> b Source foldr' :: (a0 -> b -> b) -> b -> Either a a0 -> b Source foldl :: (b -> a0 -> b) -> b -> Either a a0 -> b Source foldl' :: (b -> a0 -> b) -> b -> Either a a0 -> b Source foldr1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 Source foldl1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 Source toList :: Either a a0 -> [a0] Source null :: Either a a0 -> Bool Source length :: Either a a0 -> Int Source elem :: Eq a0 => a0 -> Either a a0 -> Bool Source maximum :: Ord a0 => Either a a0 -> a0 Source minimum :: Ord a0 => Either a a0 -> a0 Source | |
| Traversable (Either a) | С версии: base-4.7.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a0 -> f b) -> Either a a0 -> f (Either a b) Source sequenceA :: Applicative f => Either a (f a0) -> f (Either a a0) Source mapM :: Monad m => (a0 -> m b) -> Either a a0 -> m (Either a b) Source sequence :: Monad m => Either a (m a0) -> m (Either a a0) Source | |
| Show a => Show1 (Either a) | С версии: base-4.9.0.0 |
| Read a => Read1 (Either a) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes МетодыliftReadsPrec :: (Int -> ReadS a0) -> ReadS [a0] -> Int -> ReadS (Either a a0) Источник liftReadList :: (Int -> ReadS a0) -> ReadS [a0] -> ReadS [Either a a0] Источник liftReadPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec (Either a a0) Источник liftReadListPrec :: ReadPrec a0 -> ReadPrec [a0] -> ReadPrec [Either a a0] Источник | |
| Ord a => Ord1 (Either a) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Classes | |
| Eq a => Eq1 (Either a) | С версии: base-4.9.0.0 |
| Generic1 (Either a :: Type -> Type) | С версии: base-4.6.0.0 |
| (Eq a, Eq b) => Eq (Either a b) | С версии: base-2.1 |
| (Data a, Data b) => Data (Either a b) | С версии: base-4.0.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Either a b -> c (Either a b) Source gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Either a b) Source toConstr :: Either a b -> Constr Source dataTypeOf :: Either a b -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Either a b)) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Either a b)) Source gmapT :: (forall b0. Data b0 => b0 -> b0) -> Either a b -> Either a b Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Either a b -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Either a b -> r Source gmapQ :: (forall d. Data d => d -> u) -> Either a b -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Either a b -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Either a b -> m (Either a b) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Either a b -> m (Either a b) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Either a b -> m (Either a b) Source | |
| (Ord a, Ord b) => Ord (Either a b) | Since: base-2.1 |
Определено в Data.Either Методыcompare :: Either a b -> Either a b -> Ordering Source (<) :: Either a b -> Either a b -> Bool Source (<=) :: Either a b -> Either a b -> Bool Source (>) :: Either a b -> Either a b -> Bool Source (>=) :: Either a b -> Either a b -> Bool Source | |
| (Read a, Read b) => Read (Either a b) | Since: base-3.0 |
| (Show a, Show b) => Show (Either a b) | Since: base-3.0 |
| Generic (Either a b) | Since: base-4.6.0.0 |
| Semigroup (Either a b) | Since: base-4.9.0.0 |
| type Rep1 (Either a :: Type -> Type) | |
Определено в GHC.Generics type Rep1 (Either a :: Type -> Type) = D1 ('MetaData "Either" "Data.Either" "base" 'False) (C1 ('MetaCons "Left" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "Right" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) | |
| type Rep (Either a b) | |
Определено в GHC.Generics type Rep (Either a b) = D1 ('MetaData "Either" "Data.Either" "base" 'False) (C1 ('MetaCons "Left" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "Right" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b))) | |
either :: (a -> c) -> (b -> c) -> Either a b -> c Source
Анализ случаев для типа Either. Если значение является Left a, примените первую функцию к a; если это Right b, примените вторую функцию к b.
Примеры
Мы создаем два значения типа Either String Int, одно используя конструктор Left и другое используя конструктор Right. Затем мы применяем "either" функцию length (если у нас есть String) или функцию "times-two" (если у нас есть Int):
>>> let s = Left "foo" :: Either String Int >>> let n = Right 3 :: Either String Int >>> either length (*2) s 3 >>> either length (*2) n 6
Экземпляры
| Bounded Ordering | Since: base-2.1 |
| Enum Ordering | Since: base-2.1 |
Определено в GHC.Enum Методыsucc :: Ordering -> Ordering Источник pred :: Ordering -> Ordering Источник toEnum :: Int -> Ordering Источник fromEnum :: Ordering -> Int Источник enumFrom :: Ordering -> [Ordering] Источник enumFromThen :: Ordering -> Ordering -> [Ordering] Источник enumFromTo :: Ordering -> Ordering -> [Ordering] Источник enumFromThenTo :: Ordering -> Ordering -> Ordering -> [Ordering] Источник | |
| Eq Ordering | |
| Data Ordering | Since: base-4.0.0.0 |
Определено в Data.Data Краткое описание методовgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Ordering -> c Ordering Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Ordering Source toConstr :: Ordering -> Constr Source dataTypeOf :: Ordering -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Ordering) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Ordering) Source gmapT :: (forall b. Data b => b -> b) -> Ordering -> Ordering Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Ordering -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Ordering -> r Source gmapQ :: (forall d. Data d => d -> u) -> Ordering -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Ordering -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Ordering -> m Ordering Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Ordering -> m Ordering Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Ordering -> m Ordering Source | |
| Ord Ordering | |
Определено в GHC.Classes | |
| Read Ordering | С версии: base-2.1 |
| Show Ordering | С версии: base-2.1 |
| Ix Ordering | Since: base-2.1 |
Определено в GHC.Ix Методыrange :: (Ordering, Ordering) -> [Ordering] Source index :: (Ordering, Ordering) -> Ordering -> Int Source unsafeIndex :: (Ordering, Ordering) -> Ordering -> Int Source inRange :: (Ordering, Ordering) -> Ordering -> Bool Source rangeSize :: (Ordering, Ordering) -> Int Source unsafeRangeSize :: (Ordering, Ordering) -> Int Source | |
| Generic Ordering | Since: base-4.6.0.0 |
| Semigroup Ordering | Since: base-4.9.0.0 |
| Monoid Ordering | Since: base-2.1 |
| type Rep Ordering | |
Тип символа Char является перечислением, значения которого представляют кодовые точки Unicode (или эквивалентно ISO/IEC 10646) (т.е. символы, см. http://www.unicode.org/ для подробной информации). Этот набор расширяет набор символов ISO 8859-1 (Latin-1) (первые 256 символов), который сам по себе является расширением набора символов ASCII (первые 128 символов). Символьный литерал в Haskell имеет тип Char.
Для преобразования Char в соответствующее значение Int, определенное в Unicode, или обратно, используйте toEnum и fromEnum из класса Enum соответственно (или эквивалентно ord и chr).
Экземпляры
| Bounded Char | Since: base-2.1 |
| Enum Char | Since: base-2.1 |
| Eq Char | |
| Data Char | Since: base-4.0.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Char -> c Char Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Char Source toConstr :: Char -> Constr Source dataTypeOf :: Char -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Char) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Char) Source gmapT :: (forall b. Data b => b -> b) -> Char -> Char Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Char -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Char -> r Source gmapQ :: (forall d. Data d => d -> u) -> Char -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Char -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Char -> m Char Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Char -> m Char Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Char -> m Char Source | |
| Ord Char | |
Определено в Foreign.Storable | |
| IsChar Char | Since: base-2.1 |
| PrintfArg Char | Since: base-2.1 |
Определено в Text.Printf Краткое описание методовformatArg :: Char -> FieldFormatter Source parseFormat :: Char -> ModifierParser Source | |
| Generic1 (URec Char :: k -> Type) | Since: base-4.9.0.0 |
| Foldable (UChar :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UChar m -> m Source foldMap :: Monoid m => (a -> m) -> UChar a -> m Source foldMap' :: Monoid m => (a -> m) -> UChar a -> m Source foldr :: (a -> b -> b) -> b -> UChar a -> b Source foldr' :: (a -> b -> b) -> b -> UChar a -> b Source foldl :: (b -> a -> b) -> b -> UChar a -> b Source foldl' :: (b -> a -> b) -> b -> UChar a -> b Source foldr1 :: (a -> a -> a) -> UChar a -> a Source foldl1 :: (a -> a -> a) -> UChar a -> a Source toList :: UChar a -> [a] Source null :: UChar a -> Bool Source length :: UChar a -> Int Source elem :: Eq a => a -> UChar a -> Bool Source maximum :: Ord a => UChar a -> a Source minimum :: Ord a => UChar a -> a Source | |
| Traversable (UChar :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| Functor (URec Char :: Type -> Type) | Since: base-4.9.0.0 |
| Eq (URec Char p) | Since: base-4.9.0.0 |
| Ord (URec Char p) | Since: base-4.9.0.0 |
Определено в GHC.Generics Краткое описание методовcompare :: URec Char p -> URec Char p -> Ordering Source (<) :: URec Char p -> URec Char p -> Bool Source (<=) :: URec Char p -> URec Char p -> Bool Source (>) :: URec Char p -> URec Char p -> Bool Source (>=) :: URec Char p -> URec Char p -> Bool Source | |
| Show (URec Char p) | Since: base-4.9.0.0 |
| Generic (URec Char p) | Since: base-4.9.0.0 |
| data URec Char (p :: k) |
Используется для маркировки вхождений Since: base-4.9.0.0 |
| type Rep1 (URec Char :: k -> Type) | |
Определено в GHC.Generics | |
| type Rep (URec Char p) | |
Определено в GHC.Generics | |
Строка — это список символов. Строковые константы в Haskell имеют тип String.
См. Data.List для операций со списками.
Кортежи
Извлечь первый компонент пары.
Извлечь второй компонент пары.
curry :: ((a, b) -> c) -> a -> b -> c Source
curry преобразует некуррированную функцию в куррированную функцию.
Примеры
>>> curry fst 1 2 1
uncurry :: (a -> b -> c) -> (a, b) -> c Source
uncurry преобразует куррированную функцию в функцию над парами.
Примеры
>>> uncurry (+) (1,2) 3
>>> uncurry ($) (show, 1) "1"
>>> map (uncurry max) [(1,2), (3,4), (6,8)] [2,4,8]
Основные классы типов
Класс Eq определяет равенство (==) и неравенство (/=). Все основные типы данных, экспортируемые Prelude, являются экземплярами Eq, и Eq могут быть выведены для любого типа данных, составные части которого также являются экземплярами Eq.
В отчете Haskell не определены законы для Eq. Однако, от == обычно ожидается реализация отношения эквивалентности, где два значения, сравниваемые как равные, неразличимы «общедоступными» функциями, при этом «общедоступная» функция — это функция, не позволяющая видеть детали реализации. Например, для типа, представляющего ненормированные натуральные числа по модулю 100, «общедоступная» функция не различает 1 и 201. Ожидается наличие следующих свойств:
- Рефлексивность
-
x == x=True - Симметричность
-
x == y=y == x - Транзитивность
- если
x == y && y == z=True, тоx == z=True - Подстановочность
- если
x == y=Trueиfявляется «общедоступной» функцией, тип возвращаемого значения которой является экземпляромEq, тоf x == f y=True - Отрицание
-
x /= y=not (x == y)
Экземпляры
| Eq Bool | |
| Eq Char | |
| Eq Double |
Обратите внимание, что из-за наличия >>> 0/0 == (0/0 :: Double) False Также обратите внимание, что экземпляр >>> 0 == (-0 :: Double) True >>> recip 0 == recip (-0 :: Double) False |
| Eq Float |
Обратите внимание, что из-за наличия >>> 0/0 == (0/0 :: Float) False Также обратите внимание, что экземпляр >>> 0 == (-0 :: Float) True >>> recip 0 == recip (-0 :: Float) False |
| Eq Int | |
| Eq Int8 | С версии: base-2.1 |
| Eq Int16 | С версии: base-2.1 |
| Eq Int32 | С версии: base-2.1 |
| Eq Int64 | С версии: base-2.1 |
| Eq Integer | |
| Eq Natural | С версии: base-4.8.0.0 |
| Eq Ordering | |
| Eq Word | |
| Eq Word8 | С версии: base-2.1 |
| Eq Word16 | С версии: base-2.1 |
| Eq Word32 | С версии: base-2.1 |
| Eq Word64 | С версии: base-2.1 |
| Eq SomeTypeRep | |
Определено в Data.Typeable.Internal Методы(==) :: SomeTypeRep -> SomeTypeRep -> Bool Источник (/=) :: SomeTypeRep -> SomeTypeRep -> Bool Источник | |
| Eq () | |
| Eq TyCon | |
| Eq Module | |
| Eq TrName | |
| Eq BigNat | |
| Eq SrcLoc | С версии: base-4.9.0.0 |
| Eq GeneralCategory | С версии: base-2.1 |
Определено в GHC.Unicode Методы(==) :: GeneralCategory -> GeneralCategory -> Bool Источник (/=) :: GeneralCategory -> GeneralCategory -> Bool Источник | |
| Eq Number | С версии: base-4.6.0.0 |
| Eq Lexeme | С версии: base-2.1 |
| Eq Fingerprint | Since: base-4.4.0.0 |
Определено в GHC.Fingerprint.Type Методы(==) :: Fingerprint -> Fingerprint -> Bool Source (/=) :: Fingerprint -> Fingerprint -> Bool Source | |
| Eq IOMode | Since: base-4.2.0.0 |
| Eq IntPtr | |
| Eq WordPtr | |
| Eq CUIntMax | |
| Eq CIntMax | |
| Eq CUIntPtr | |
| Eq CIntPtr | |
| Eq CSUSeconds | |
Определено в Foreign.C.Types Методы(==) :: CSUSeconds -> CSUSeconds -> Bool Source (/=) :: CSUSeconds -> CSUSeconds -> Bool Source | |
| Eq CUSeconds | |
| Eq CTime | |
| Eq CClock | |
| Eq CSigAtomic | |
Определено в Foreign.C.Types Методы(==) :: CSigAtomic -> CSigAtomic -> Bool Источник (/=) :: CSigAtomic -> CSigAtomic -> Bool Источник | |
| Eq CWchar | |
| Eq CSize | |
| Eq CPtrdiff | |
| Eq CDouble | |
| Eq CFloat | |
| Eq CBool | |
| Eq Any | Since: base-2.1 |
| Eq All | Since: base-2.1 |
| Eq ArithException | Since: base-3.0 |
Определено в GHC.Exception.Type Методы(==) :: ArithException -> ArithException -> Bool Source (/=) :: ArithException -> ArithException -> Bool Source | |
| Eq ErrorCall | Since: base-4.7.0.0 |
| Eq IOException | Since: base-4.1.0.0 |
Определено в GHC.IO.Exception Методы(==) :: IOException -> IOException -> Bool Source (/=) :: IOException -> IOException -> Bool Source | |
| Eq MaskingState | Since: base-4.3.0.0 |
Определено в GHC.IO Методы(==) :: MaskingState -> MaskingState -> Bool Source (/=) :: MaskingState -> MaskingState -> Bool Source | |
| Eq BufferState | Since: base-4.2.0.0 |
Определено в GHC.IO.Exception Методы(==) :: IOErrorType -> IOErrorType -> Bool Source (/=) :: IOErrorType -> IOErrorType -> Bool Source | |
| Eq ExitCode | |
| Eq ArrayException | Since: base-4.2.0.0 |
Определено в GHC.IO.Exception Методы(==) :: ArrayException -> ArrayException -> Bool Source (/=) :: ArrayException -> ArrayException -> Bool Source | |
| Eq AsyncException | Since: base-4.2.0.0 |
Определено в GHC.IO.Exception Методы(==) :: AsyncException -> AsyncException -> Bool Source (/=) :: AsyncException -> AsyncException -> Bool Source | |
| Eq Errno | Since: base-2.1 |
| Eq Fd | |
| Eq CNfds | |
| Eq CSocklen | |
| Eq CTimer | |
| Eq CIno | |
| Eq CDev | |
| Eq Lifetime | Since: base-4.8.1.0 |
| Eq Event | Since: base-4.4.0.0 |
| Eq ThreadStatus | Since: base-4.3.0.0 |
Определено в GHC.Conc.Sync Краткое описание методов(==) :: ThreadStatus -> ThreadStatus -> Bool Source (/=) :: ThreadStatus -> ThreadStatus -> Bool Source | |
| Eq BlockReason | Since: base-4.3.0.0 |
Определено в GHC.Conc.Sync Краткое описание методов(==) :: BlockReason -> BlockReason -> Bool Source (/=) :: BlockReason -> BlockReason -> Bool Source | |
| Eq ThreadId | Since: base-4.2.0.0 |
| Eq TimeoutKey | Since: base-4.7.0.0 |
Определено в GHC.Event.TimerManager Краткое описание методов(==) :: TimeoutKey -> TimeoutKey -> Bool Source (/=) :: TimeoutKey -> TimeoutKey -> Bool Source | |
| Eq FdKey | Since: base-4.4.0.0 |
| Eq HandlePosn | С версии: base-4.1.0.0 |
Определено в GHC.IO.Handle Методы(==) :: HandlePosn -> HandlePosn -> Bool Источник (/=) :: HandlePosn -> HandlePosn -> Bool Источник | |
| Eq Version | С версии: base-2.1 |
| Eq ByteOrder | С версии: base-4.11.0.0 |
| Eq Unique | |
| Eq Timeout | |
| Eq Fixity | С версии: base-4.0.0.0 |
| Eq ConstrRep | С версии: base-4.0.0.0 |
| Eq DataRep | С версии: base-4.0.0.0 |
| Eq Constr |
Равенство конструкторов С версии: base-4.0.0.0 |
| Eq SpecConstrAnnotation | С версии: base-4.3.0.0 |
Определено в GHC.Exts Методы(==) :: SpecConstrAnnotation -> SpecConstrAnnotation -> Bool Источник (/=) :: SpecConstrAnnotation -> SpecConstrAnnotation -> Bool Источник | |
| Eq Void | С версии: base-4.8.0.0 |
| Eq a => Eq [a] | |
| Eq a => Eq (Maybe a) | С версии: base-2.1 |
| Eq a => Eq (Ratio a) | С версии: base-2.1 |
| Eq (StablePtr a) | С версии: base-2.1 |
| Eq (Ptr a) | С версии: base-2.1 |
| Eq (FunPtr a) | |
| Eq p => Eq (Par1 p) | С версии: base-4.7.0.0 |
| Eq a => Eq (NonEmpty a) | С версии: base-4.9.0.0 |
| Eq (MVar a) | С версии: base-4.1.0.0 |
| Eq a => Eq (Down a) | С версии: base-4.6.0.0 |
| Eq a => Eq (Product a) | С версии: base-2.1 |
| Eq a => Eq (Sum a) | С версии: base-2.1 |
| Eq a => Eq (Dual a) | С версии: base-2.1 |
| Eq a => Eq (Last a) | С версии: base-2.1 |
| Eq a => Eq (First a) | С версии: base-2.1 |
| Eq (IORef a) |
Равенство указателей. С версии: base-4.0.0.0 |
| Eq (ForeignPtr a) | С версии: base-2.1 |
Определено в GHC.ForeignPtr Методы(==) :: ForeignPtr a -> ForeignPtr a -> Bool Источник (/=) :: ForeignPtr a -> ForeignPtr a -> Bool Источник | |
| Eq (TVar a) | С версии: base-4.8.0.0 |
| Eq a => Eq (Identity a) | С версии: base-4.8.0.0 |
| Eq a => Eq (ZipList a) | С версии: base-4.7.0.0 |
| Eq (StableName a) | С версии: base-2.1 |
Определено в GHC.StableName Методы(==) :: StableName a -> StableName a -> Bool Источник (/=) :: StableName a -> StableName a -> Bool Источник | |
| Eq (Chan a) | С версии: base-4.4.0.0 |
| Eq a => Eq (Option a) | С версии: base-4.9.0.0 |
| Eq m => Eq (WrappedMonoid m) | С версии: base-4.9.0.0 |
Определено в Data.Semigroup Методы(==) :: WrappedMonoid m -> WrappedMonoid m -> Bool Источник (/=) :: WrappedMonoid m -> WrappedMonoid m -> Bool Источник | |
| Eq a => Eq (Last a) | С версии: base-4.9.0.0 |
| Eq a => Eq (First a) | С версии: base-4.9.0.0 |
| Eq a => Eq (Max a) | С версии: base-4.9.0.0 |
| Eq a => Eq (Min a) | С версии: base-4.9.0.0 |
| Eq a => Eq (Complex a) | С версии: base-2.1 |
| (Eq a, Eq b) => Eq (Either a b) | С версии: base-2.1 |
| Eq (V1 p) | С версии: base-4.9.0.0 |
| Eq (U1 p) | С версии: base-4.9.0.0 |
| Eq (TypeRep a) | С версии: base-2.1 |
| (Eq a, Eq b) => Eq (a, b) | |
| Eq (STRef s a) |
Равенство указателей. С версии: base-2.1 |
| (Ix i, Eq e) => Eq (Array i e) | С версии: base-2.1 |
| Eq (Proxy s) | С версии: base-4.7.0.0 |
| Eq (IOArray i e) | С версии: base-4.1.0.0 |
| Eq a => Eq (Arg a b) | С версии: base-4.9.0.0 |
| Eq (Fixed a) | С версии: base-2.1 |
| Eq (f p) => Eq (Rec1 f p) | С версии: base-4.7.0.0 |
| Eq (URec Word p) | С версии: base-4.9.0.0 |
| Eq (Coercion a b) | С версии: base-4.7.0.0 |
| Eq (f a) => Eq (Alt f a) | С версии: base-4.8.0.0 |
| Eq (f a) => Eq (Ap f a) | С версии: base-4.12.0.0 |
| Eq a => Eq (Const a b) | С версии: base-4.9.0.0 |
| Eq c => Eq (K1 i c p) | С версии: base-4.7.0.0 |
| (Eq (f p), Eq (g p)) => Eq ((f :+: g) p) | С версии: base-4.7.0.0 |
| (Eq (f p), Eq (g p)) => Eq ((f :*: g) p) | С версии: base-4.7.0.0 |
| (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d) | |
| Eq (a :~~: b) | Since: base-4.10.0.0 |
| (Eq1 f, Eq1 g, Eq a) => Eq (Sum f g a) | Since: base-4.9.0.0 |
| (Eq1 f, Eq1 g, Eq a) => Eq (Product f g a) | Since: base-4.9.0.0 |
| Eq (f p) => Eq (M1 i c f p) | Since: base-4.7.0.0 |
| Eq (f (g p)) => Eq ((f :.: g) p) | Since: base-4.7.0.0 |
| Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e) | |
| (Eq1 f, Eq1 g, Eq a) => Eq (Compose f g a) | Since: base-4.9.0.0 |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Eq (a, b, c, d, e, f) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Eq (a, b, c, d, e, f, g) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) => Eq (a, b, c, d, e, f, g, h) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) => Eq (a, b, c, d, e, f, g, h, i) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) => Eq (a, b, c, d, e, f, g, h, i, j) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) => Eq (a, b, c, d, e, f, g, h, i, j, k) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) => Eq (a, b, c, d, e, f, g, h, i, j, k, l) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m) | |
class Eq a => Ord a where Source
Класс Ord используется для полностью упорядоченных типов данных.
Экземпляры Ord могут быть выведены для любого определяемого пользователем типа данных, составные типы которого находятся в Ord. Объявленный порядок конструкторов в объявлении данных определяет порядок в выведенных экземплярах Ord. Тип данных Ordering позволяет одному сравнению определить точный порядок двух объектов.
В отчете Haskell не определены законы для Ord. Однако обычно ожидается, что <= реализует нестрогий частичный порядок и обладает следующими свойствами:
- Транзитивность
- если
x <= y && y <= z=True, тоx <= z=True - Рефлексивность
-
x <= x=True - Антисимметричность
- если
x <= y && y <= x=True, тоx == y=True
Обратите внимание, что ожидается, что будут выполняться следующие взаимодействия операторов:
-
x >= y=y <= x -
x < y=x <= y && x /= y -
x > y=y < x -
x < y=compare x y == LT -
x > y=compare x y == GT -
x == y=compare x y == EQ -
min x y == if x <= y then x else y=True -
max x y == if x >= y then x else y=True
Обратите внимание, что (7.) и (8.) не требуют, чтобы min и max возвращали один из своих аргументов. Результат просто должен равняться одному из аргументов с точки зрения (==).
Минимальное полное определение: либо compare, либо <=. Использование compare может быть более эффективным для сложных типов.
Примеры
| Ord Bool | |
Определено в GHC.Classes Методыcompare :: Bool -> Bool -> Ordering Исходный код (<) :: Bool -> Bool -> Bool Исходный код (<=) :: Bool -> Bool -> Bool Исходный код (>) :: Bool -> Bool -> Bool Исходный код (>=) :: Bool -> Bool -> Bool Исходный код max :: Bool -> Bool -> Bool Исходный код min :: Bool -> Bool -> Bool Исходный код | |
| Ord Char | |
Определено в GHC.Classes Методыcompare :: Char -> Char -> Ordering Исходный код (<) :: Char -> Char -> Bool Исходный код (<=) :: Char -> Char -> Bool Исходный код (>) :: Char -> Char -> Bool Исходный код (>=) :: Char -> Char -> Bool Исходный код max :: Char -> Char -> Char Исходный код min :: Char -> Char -> Char Исходный код | |
| Ord Double |
Обратите внимание, что из-за наличия >>> 0/0 <= (0/0 :: Double) False Также обратите внимание, что из-за этого же, взаимодействие операторов >>> (0/0 :: Double) > 1 False >>> compare (0/0 :: Double) 1 GT |
Определено в GHC.Classes Методыcompare :: Double -> Double -> Ordering Исходный код (<) :: Double -> Double -> Bool Исходный код (<=) :: Double -> Double -> Bool Исходный код (>) :: Double -> Double -> Bool Исходный код (>=) :: Double -> Double -> Bool Исходный код max :: Double -> Double -> Double Исходный код min :: Double -> Double -> Double Исходный код | |
| Ord Float |
Обратите внимание, что из-за наличия >>> 0/0 <= (0/0 :: Float) False Также обратите внимание, что из-за этого же, взаимодействие операторов >>> (0/0 :: Float) > 1 False >>> compare (0/0 :: Float) 1 GT |
| Ord Int | |
Определено в GHC.Classes | |
| Ord Int8 | С версии: base-2.1 |
Определено в GHC.Int | |
| Ord Int16 | С версии: base-2.1 |
| Ord Int32 | Since: base-2.1 |
| Ord Int64 | Since: base-2.1 |
| Ord Integer | |
| Ord Natural | Since: base-4.8.0.0 |
Определено в GHC.Natural | |
| Ord Ordering | |
Определено в GHC.Classes | |
| Ord Word | |
Определено в GHC.Classes | |
| Ord Word8 | С версии: base-2.1 |
Определено в GHC.Word | |
| Ord Word16 | С версии: base-2.1 |
| Ord Word32 | С версии: base-2.1 |
| Ord Word64 | С версии: base-2.1 |
Определено в GHC.Word | |
| Ord SomeTypeRep | |
Определено в Data.Typeable.Internal Краткое описание методовcompare :: SomeTypeRep -> SomeTypeRep -> Ordering Источник (<) :: SomeTypeRep -> SomeTypeRep -> Bool Источник (<=) :: SomeTypeRep -> SomeTypeRep -> Bool Источник (>) :: SomeTypeRep -> SomeTypeRep -> Bool Источник (>=) :: SomeTypeRep -> SomeTypeRep -> Bool Источник max :: SomeTypeRep -> SomeTypeRep -> SomeTypeRep Источник min :: SomeTypeRep -> SomeTypeRep -> SomeTypeRep Источник | |
| Ord () | |
| Ord TyCon | |
Определено в Foreign.C.Types | |
| Ord CIntMax | |
Определено в Foreign.C.Types | |
| Ord CUIntPtr | |
Определено в Foreign.C.Types | |
| Ord CIntPtr | |
Определено в Foreign.C.Types | |
| Ord CSUSeconds | |
Определено в Foreign.C.Types Краткое описание методовcompare :: CSUSeconds -> CSUSeconds -> Ordering Source (<) :: CSUSeconds -> CSUSeconds -> Bool Source (<=) :: CSUSeconds -> CSUSeconds -> Bool Source (>) :: CSUSeconds -> CSUSeconds -> Bool Source (>=) :: CSUSeconds -> CSUSeconds -> Bool Source max :: CSUSeconds -> CSUSeconds -> CSUSeconds Source min :: CSUSeconds -> CSUSeconds -> CSUSeconds Source | |
| Ord CUSeconds | |
Определено в Foreign.C.Types Краткое описание методовcompare :: CUSeconds -> CUSeconds -> Ordering Source (<) :: CUSeconds -> CUSeconds -> Bool Source (<=) :: CUSeconds -> CUSeconds -> Bool Source (>) :: CUSeconds -> CUSeconds -> Bool Source (>=) :: CUSeconds -> CUSeconds -> Bool Source | |
| Ord CTime | |
Определено в Foreign.C.Types | |
| Ord CClock | |
| Ord CSigAtomic | |
Определено в Foreign.C.Types Краткое описание методовcompare :: CSigAtomic -> CSigAtomic -> Ordering Source (<) :: CSigAtomic -> CSigAtomic -> Bool Source (<=) :: CSigAtomic -> CSigAtomic -> Bool Source (>) :: CSigAtomic -> CSigAtomic -> Bool Source (>=) :: CSigAtomic -> CSigAtomic -> Bool Source max :: CSigAtomic -> CSigAtomic -> CSigAtomic Source min :: CSigAtomic -> CSigAtomic -> CSigAtomic Source | |
| Ord CWchar | |
| Ord CSize | |
Определено в Foreign.C.Types | |
| Ord CPtrdiff | |
Определено в Foreign.C.Types | |
| Ord CDouble | |
Определено в Foreign.C.Types | |
| Ord CFloat | |
| Ord CBool | |
Определено в Foreign.C.Types | |
| Ord CULLong | |
Определено в Foreign.C.Types | |
| Ord CLLong | |
| Ord CULong | |
| Ord CLong | |
Определено в Foreign.C.Types | |
| Ord CUInt | |
Определено в Foreign.C.Types | |
| Ord CInt | |
Определено в Foreign.C.Types | |
| Ord CUShort | |
Определено в Foreign.C.Types | |
| Ord CShort | |
| Ord CUChar | |
| Ord CSChar | |
Определено в Data.Semigroup.Internal | |
| Ord All | С версии: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Ord ArithException | С версии: base-3.0 |
Определено в GHC.Exception.Type Краткое описание методовcompare :: ArithException -> ArithException -> Ordering Источник (<) :: ArithException -> ArithException -> Bool Источник (<=) :: ArithException -> ArithException -> Bool Источник (>) :: ArithException -> ArithException -> Bool Источник (>=) :: ArithException -> ArithException -> Bool Источник max :: ArithException -> ArithException -> ArithException Источник min :: ArithException -> ArithException -> ArithException Источник | |
| Ord ErrorCall | С версии: base-4.7.0.0 |
Определено в GHC.Exception Краткое описание методовcompare :: ErrorCall -> ErrorCall -> Ordering Source (<) :: ErrorCall -> ErrorCall -> Bool Source (<=) :: ErrorCall -> ErrorCall -> Bool Source (>) :: ErrorCall -> ErrorCall -> Bool Source (>=) :: ErrorCall -> ErrorCall -> Bool Source | |
| Ord SeekMode | С версии: base-4.2.0.0 |
Определено в GHC.IO.Device | |
| Ord NewlineMode | С версии: base-4.3.0.0 |
Определено в GHC.IO.Handle.Types Краткое описание методовcompare :: NewlineMode -> NewlineMode -> Ordering Source (<) :: NewlineMode -> NewlineMode -> Bool Source (<=) :: NewlineMode -> NewlineMode -> Bool Source (>) :: NewlineMode -> NewlineMode -> Bool Source (>=) :: NewlineMode -> NewlineMode -> Bool Source max :: NewlineMode -> NewlineMode -> NewlineMode Source min :: NewlineMode -> NewlineMode -> NewlineMode Source | |
| Ord Newline | С версии: base-4.3.0.0 |
Определено в GHC.IO.Exception Краткое описание методовcompare :: ArrayException -> ArrayException -> Ordering Source (<) :: ArrayException -> ArrayException -> Bool Source (<=) :: ArrayException -> ArrayException -> Bool Source (>) :: ArrayException -> ArrayException -> Bool Source (>=) :: ArrayException -> ArrayException -> Bool Source max :: ArrayException -> ArrayException -> ArrayException Source min :: ArrayException -> ArrayException -> ArrayException Source | |
| Ord AsyncException | С версии: base-4.2.0.0 |
Определено в GHC.IO.Exception Краткое описание методовcompare :: AsyncException -> AsyncException -> Ordering Source (<) :: AsyncException -> AsyncException -> Bool Source (<=) :: AsyncException -> AsyncException -> Bool Source (>) :: AsyncException -> AsyncException -> Bool Source (>=) :: AsyncException -> AsyncException -> Bool Source max :: AsyncException -> AsyncException -> AsyncException Source min :: AsyncException -> AsyncException -> AsyncException Source | |
| Ord Fd | |
| Ord CNfds | |
Определено в System.Posix.Types | |
| Ord CSocklen | |
Определено в System.Posix.Types | |
| Ord CTimer | |
Определено в System.Posix.Types | |
| Ord CKey | |
Определено в System.Posix.Types | |
| Ord CId | |
| Ord CFsFilCnt | |
Определено в System.Posix.Types Краткое описание методовcompare :: CFsFilCnt -> CFsFilCnt -> Ordering Source (<) :: CFsFilCnt -> CFsFilCnt -> Bool Source (<=) :: CFsFilCnt -> CFsFilCnt -> Bool Source (>) :: CFsFilCnt -> CFsFilCnt -> Bool Source (>=) :: CFsFilCnt -> CFsFilCnt -> Bool Source | |
| Ord CFsBlkCnt | |
Определено в System.Posix.Types Краткое описание методовcompare :: CFsBlkCnt -> CFsBlkCnt -> Ordering Source (<) :: CFsBlkCnt -> CFsBlkCnt -> Bool Source (<=) :: CFsBlkCnt -> CFsBlkCnt -> Bool Source (>) :: CFsBlkCnt -> CFsBlkCnt -> Bool Source (>=) :: CFsBlkCnt -> CFsBlkCnt -> Bool Source | |
| Ord CClockId | |
Определено в System.Posix.Types | |
| Ord CBlkCnt | |
Определено в System.Posix.Types | |
| Ord CBlkSize | |
Определено в System.Posix.Types | |
| Ord CRLim | |
Определено в System.Posix.Types | |
| Ord CTcflag | |
Определено в System.Posix.Types | |
| Ord CSpeed | |
Определено в System.Posix.Types | |
| Ord CCc | |
| Ord CUid | |
Определено в System.Posix.Types | |
| Ord CNlink | |
Определено в System.Posix.Types | |
| Ord CGid | |
Определено в System.Posix.Types | |
| Ord CSsize | |
Определено в System.Posix.Types | |
| Ord CPid | |
Определено в System.Posix.Types | |
| Ord COff | |
Определено в System.Posix.Types | |
| Ord CMode | |
Определено в System.Posix.Types | |
| Ord CIno | |
Определено в System.Posix.Types | |
| Ord CDev | |
Определено в System.Posix.Types | |
| Ord ThreadStatus | С версии: base-4.3.0.0 |
Определено в GHC.Conc.Sync Методыcompare :: ThreadStatus -> ThreadStatus -> Ordering Source (<) :: ThreadStatus -> ThreadStatus -> Bool Source (<=) :: ThreadStatus -> ThreadStatus -> Bool Source (>) :: ThreadStatus -> ThreadStatus -> Bool Source (>=) :: ThreadStatus -> ThreadStatus -> Bool Source max :: ThreadStatus -> ThreadStatus -> ThreadStatus Source min :: ThreadStatus -> ThreadStatus -> ThreadStatus Source | |
| Ord BlockReason | Since: base-4.3.0.0 |
Определено в GHC.Conc.Sync Методыcompare :: BlockReason -> BlockReason -> Ordering Source (<) :: BlockReason -> BlockReason -> Bool Source (<=) :: BlockReason -> BlockReason -> Bool Source (>) :: BlockReason -> BlockReason -> Bool Source (>=) :: BlockReason -> BlockReason -> Bool Source max :: BlockReason -> BlockReason -> BlockReason Source min :: BlockReason -> BlockReason -> BlockReason Source | |
| Ord ThreadId | Since: base-4.2.0.0 |
Определено в GHC.Conc.Sync | |
| Ord Version | Since: base-2.1 |
Определено в Data.Version | |
| Ord ByteOrder | С версии: base-4.11.0.0 |
Определено в GHC.ByteOrder Краткое описание методовcompare :: ByteOrder -> ByteOrder -> Ordering Source (<) :: ByteOrder -> ByteOrder -> Bool Source (<=) :: ByteOrder -> ByteOrder -> Bool Source (>) :: ByteOrder -> ByteOrder -> Bool Source (>=) :: ByteOrder -> ByteOrder -> Bool Source | |
| Ord Unique | |
| Ord Void | С версии: base-4.8.0.0 |
Определено в Data.Void | |
| Ord a => Ord [a] | |
| Ord a => Ord (Maybe a) | С версии: base-2.1 |
Определено в GHC.Maybe | |
| Integral a => Ord (Ratio a) | С версии: base-2.0.1 |
Определено в GHC.Real | |
| Ord (Ptr a) | С версии: base-2.1 |
| Ord (FunPtr a) | |
Определено в GHC.Ptr Краткое описание методовcompare :: FunPtr a -> FunPtr a -> Ordering Источник (<) :: FunPtr a -> FunPtr a -> Bool Источник (<=) :: FunPtr a -> FunPtr a -> Bool Источник (>) :: FunPtr a -> FunPtr a -> Bool Источник (>=) :: FunPtr a -> FunPtr a -> Bool Источник | |
| Ord p => Ord (Par1 p) | С версии: base-4.7.0.0 |
Определено в GHC.Generics | |
| Ord a => Ord (NonEmpty a) | С версии: base-4.9.0.0 |
Определено в 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 | |
| Ord a => Ord (Down a) | С версии: base-4.6.0.0 |
| Ord a => Ord (Product a) | С версии: base-2.1 |
Определено в Data.Semigroup.Internal Краткое описание методовcompare :: Product a -> Product a -> Ordering Source (<) :: Product a -> Product a -> Bool Source (<=) :: Product a -> Product a -> Bool Source (>) :: Product a -> Product a -> Bool Source (>=) :: Product a -> Product a -> Bool Source | |
| Ord a => Ord (Sum a) | С версии: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Ord a => Ord (Dual a) | Since: base-2.1 |
Определено в Data.Semigroup.Internal | |
| Ord a => Ord (Last a) | Since: base-2.1 |
| Ord a => Ord (First a) | Since: base-2.1 |
Определено в Data.Monoid | |
| Ord (ForeignPtr a) | С версии: base-2.1 |
Определено в GHC.ForeignPtr Краткое описание методовcompare :: ForeignPtr a -> ForeignPtr a -> Ordering Source (<) :: ForeignPtr a -> ForeignPtr a -> Bool Source (<=) :: ForeignPtr a -> ForeignPtr a -> Bool Source (>) :: ForeignPtr a -> ForeignPtr a -> Bool Source (>=) :: ForeignPtr a -> ForeignPtr a -> Bool Source max :: ForeignPtr a -> ForeignPtr a -> ForeignPtr a Source min :: ForeignPtr a -> ForeignPtr a -> ForeignPtr a Source | |
| Ord a => Ord (Identity a) | С версии: base-4.8.0.0 |
Определено в Data.Functor.Identity Краткое описание методовcompare :: Identity a -> Identity a -> Ordering Source (<) :: Identity a -> Identity a -> Bool Source (<=) :: Identity a -> Identity a -> Bool Source (>) :: Identity a -> Identity a -> Bool Source (>=) :: Identity a -> Identity a -> Bool Source | |
| Ord a => Ord (ZipList a) | С версии: base-4.7.0.0 |
Определено в Control.Applicative Краткое описание методовcompare :: ZipList a -> ZipList a -> Ordering Source (<) :: ZipList a -> ZipList a -> Bool Source (<=) :: ZipList a -> ZipList a -> Bool Source (>) :: ZipList a -> ZipList a -> Bool Source (>=) :: ZipList a -> ZipList a -> Bool Source | |
| Ord a => Ord (Option a) | Since: base-4.9.0.0 |
Определено в Data.Semigroup | |
| Ord m => Ord (WrappedMonoid m) | Since: base-4.9.0.0 |
Определено в Data.Semigroup Краткое описание методовcompare :: WrappedMonoid m -> WrappedMonoid m -> Ordering Source (<) :: WrappedMonoid m -> WrappedMonoid m -> Bool Source (<=) :: WrappedMonoid m -> WrappedMonoid m -> Bool Source (>) :: WrappedMonoid m -> WrappedMonoid m -> Bool Source (>=) :: WrappedMonoid m -> WrappedMonoid m -> Bool Source max :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Source min :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Source | |
| Ord a => Ord (Last a) | Since: base-4.9.0.0 |
| Ord a => Ord (First a) | Since: base-4.9.0.0 |
Определено в Data.Semigroup | |
| Ord a => Ord (Max a) | Since: base-4.9.0.0 |
Определено в Data.Semigroup | |
| Ord a => Ord (Min a) | Since: base-4.9.0.0 |
Определено в Data.Semigroup | |
| (Ord a, Ord b) => Ord (Either a b) | Since: base-2.1 |
Определено в Data.Either Методыcompare :: Either a b -> Either a b -> Ordering Source (<) :: Either a b -> Either a b -> Bool Source (<=) :: Either a b -> Either a b -> Bool Source (>) :: Either a b -> Either a b -> Bool Source (>=) :: Either a b -> Either a b -> Bool Source | |
| Ord (V1 p) | Since: base-4.9.0.0 |
| Ord (U1 p) | Since: base-4.7.0.0 |
Определено в GHC.Generics | |
| Ord (TypeRep a) | С версии: base-4.4.0.0 |
Определено в Data.Typeable.Internal Краткое описание методовcompare :: TypeRep a -> TypeRep a -> Ordering Source (<) :: TypeRep a -> TypeRep a -> Bool Source (<=) :: TypeRep a -> TypeRep a -> Bool Source (>) :: TypeRep a -> TypeRep a -> Bool Source (>=) :: TypeRep a -> TypeRep a -> Bool Source | |
| (Ord a, Ord b) => Ord (a, b) | |
| (Ix i, Ord e) => Ord (Array i e) | С версии: base-2.1 |
Определено в GHC.Arr Краткое описание методовcompare :: Array i e -> Array i e -> Ordering Source (<) :: Array i e -> Array i e -> Bool Source (<=) :: Array i e -> Array i e -> Bool Source (>) :: Array i e -> Array i e -> Bool Source (>=) :: Array i e -> Array i e -> Bool Source | |
| Ord (Proxy s) | С версии: base-4.7.0.0 |
| Ord a => Ord (Arg a b) | С версии: base-4.9.0.0 |
| Ord (Fixed a) | С версии: base-2.1 |
| Ord (f p) => Ord (Rec1 f p) | С версии: base-4.7.0.0 |
| Ord (URec (Ptr ()) p) | Since: base-4.9.0.0 |
Определено в GHC.Generics Краткое описание методовcompare :: URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering Source (<) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool Source (<=) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool Source (>) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool Source (>=) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool Source max :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p Source min :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p Source | |
| (Ord a, Ord b, Ord c) => Ord (a, b, c) | |
Определено в GHC.Classes Краткое описание методовcompare :: (a, b, c) -> (a, b, c) -> Ordering Source (<) :: (a, b, c) -> (a, b, c) -> Bool Source (<=) :: (a, b, c) -> (a, b, c) -> Bool Source (>) :: (a, b, c) -> (a, b, c) -> Bool Source (>=) :: (a, b, c) -> (a, b, c) -> Bool Source | |
| Ord (a :~: b) | Since: base-4.7.0.0 |
Определено в Data.Type.Equality Краткое описание методовcompare :: (a :~: b) -> (a :~: b) -> Ordering Source (<) :: (a :~: b) -> (a :~: b) -> Bool Source (<=) :: (a :~: b) -> (a :~: b) -> Bool Source (>) :: (a :~: b) -> (a :~: b) -> Bool Source (>=) :: (a :~: b) -> (a :~: b) -> Bool Source | |
| Ord (Coercion a b) | Since: base-4.7.0.0 |
Определено в Data.Type.Coercion Краткое описание методовcompare :: Coercion a b -> Coercion a b -> Ordering Source (<) :: Coercion a b -> Coercion a b -> Bool Source (<=) :: Coercion a b -> Coercion a b -> Bool Source (>) :: Coercion a b -> Coercion a b -> Bool Source (>=) :: Coercion a b -> Coercion a b -> Bool Source | |
| Ord (f a) => Ord (Alt f a) | Since: base-4.8.0.0 |
Определено в Data.Semigroup.Internal | |
| Ord (f a) => Ord (Ap f a) | Since: base-4.12.0.0 |
| Ord a => Ord (Const a b) | Since: base-4.9.0.0 |
Определено в Data.Functor.Const Краткое описание методовcompare :: Const a b -> Const a b -> Ordering Source (<) :: Const a b -> Const a b -> Bool Source (<=) :: Const a b -> Const a b -> Bool Source (>) :: Const a b -> Const a b -> Bool Source (>=) :: Const a b -> Const a b -> Bool Source | |
| Ord c => Ord (K1 i c p) | Since: base-4.7.0.0 |
Определено в GHC.Generics | |
| (Ord (f p), Ord (g p)) => Ord ((f :+: g) p) | Since: base-4.7.0.0 |
Определено в GHC.Generics Краткое описание методовcompare :: (f :+: g) p -> (f :+: g) p -> Ordering Source (<) :: (f :+: g) p -> (f :+: g) p -> Bool Source (<=) :: (f :+: g) p -> (f :+: g) p -> Bool Source (>) :: (f :+: g) p -> (f :+: g) p -> Bool Source (>=) :: (f :+: g) p -> (f :+: g) p -> Bool Source | |
| (Ord (f p), Ord (g p)) => Ord ((f :*: g) p) | Since: base-4.7.0.0 |
Определено в GHC.Generics Краткое описание методовcompare :: (f :*: g) p -> (f :*: g) p -> Ordering Источник (<) :: (f :*: g) p -> (f :*: g) p -> Bool Источник (<=) :: (f :*: g) p -> (f :*: g) p -> Bool Источник (>) :: (f :*: g) p -> (f :*: g) p -> Bool Источник (>=) :: (f :*: g) p -> (f :*: g) p -> Bool Источник | |
| (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d) | |
Определено в GHC.Classes Краткое описание методовcompare :: (a, b, c, d) -> (a, b, c, d) -> Ordering Источник (<) :: (a, b, c, d) -> (a, b, c, d) -> Bool Источник (<=) :: (a, b, c, d) -> (a, b, c, d) -> Bool Источник (>) :: (a, b, c, d) -> (a, b, c, d) -> Bool Источник (>=) :: (a, b, c, d) -> (a, b, c, d) -> Bool Источник max :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Источник min :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Источник | |
| Ord (a :~~: b) | С версии: base-4.10.0.0 |
Определено в Data.Type.Equality Краткое описание методовcompare :: (a :~~: b) -> (a :~~: b) -> Ordering Источник (<) :: (a :~~: b) -> (a :~~: b) -> Bool Источник (<=) :: (a :~~: b) -> (a :~~: b) -> Bool Источник (>) :: (a :~~: b) -> (a :~~: b) -> Bool Источник (>=) :: (a :~~: b) -> (a :~~: b) -> Bool Источник | |
| (Ord1 f, Ord1 g, Ord a) => Ord (Sum f g a) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Sum Краткое описание методовcompare :: Sum f g a -> Sum f g a -> Ordering Source (<) :: Sum f g a -> Sum f g a -> Bool Source (<=) :: Sum f g a -> Sum f g a -> Bool Source (>) :: Sum f g a -> Sum f g a -> Bool Source (>=) :: Sum f g a -> Sum f g a -> Bool Source | |
| (Ord1 f, Ord1 g, Ord a) => Ord (Product f g a) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Product Краткое описание методовcompare :: Product f g a -> Product f g a -> Ordering Source (<) :: Product f g a -> Product f g a -> Bool Source (<=) :: Product f g a -> Product f g a -> Bool Source (>) :: Product f g a -> Product f g a -> Bool Source (>=) :: Product f g a -> Product f g a -> Bool Source max :: Product f g a -> Product f g a -> Product f g a Source min :: Product f g a -> Product f g a -> Product f g a Source | |
| Ord (f p) => Ord (M1 i c f p) | С версии: base-4.7.0.0 |
Определено в GHC.Generics Краткое описание методовcompare :: M1 i c f p -> M1 i c f p -> Ordering Source (<) :: M1 i c f p -> M1 i c f p -> Bool Source (<=) :: M1 i c f p -> M1 i c f p -> Bool Source (>) :: M1 i c f p -> M1 i c f p -> Bool Source (>=) :: M1 i c f p -> M1 i c f p -> Bool Source | |
| Ord (f (g p)) => Ord ((f :.: g) p) | С версии: base-4.7.0.0 |
Определено в GHC.Generics Краткое описание методовcompare :: (f :.: g) p -> (f :.: g) p -> Ordering Source (<) :: (f :.: g) p -> (f :.: g) p -> Bool Source (<=) :: (f :.: g) p -> (f :.: g) p -> Bool Source (>) :: (f :.: g) p -> (f :.: g) p -> Bool Source (>=) :: (f :.: g) p -> (f :.: g) p -> Bool Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e) | |
Определено в GHC.Classes Краткое описание методовcompare :: (a, b, c, d, e) -> (a, b, c, d, e) -> Ordering Source (<) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool Source (<=) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool Source (>) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool Source (>=) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool Source max :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source min :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source | |
| (Ord1 f, Ord1 g, Ord a) => Ord (Compose f g a) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Compose Краткое описание методовcompare :: Compose f g a -> Compose f g a -> Ordering Source (<) :: Compose f g a -> Compose f g a -> Bool Source (<=) :: Compose f g a -> Compose f g a -> Bool Source (>) :: Compose f g a -> Compose f g a -> Bool Source (>=) :: Compose f g a -> Compose f g a -> Bool Source max :: Compose f g a -> Compose f g a -> Compose f g a Source min :: Compose f g a -> Compose f g a -> Compose f g a Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f) | |
Определено в GHC.Classes Краткое описание методовcompare :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Ordering Source (<) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool Source (<=) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool Source (>) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool Source (>=) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool Source max :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) Source min :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f) | |
Определено в GHC.Classes Краткое описание методовcompare :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Ordering Source (<) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool Source (<=) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool Source (>) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool Source (>=) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool Source max :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) Source min :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g) => Ord (a, b, c, d, e, f, g) | |
Определено в GHC.Classes Краткое описание методовcompare :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Ordering Source (<) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool Source (<=) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool Source (>) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool Source (>=) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool Source max :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) Source min :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h) => Ord (a, b, c, d, e, f, g, h) | |
Определено в GHC.Classes Краткое описание методовcompare :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Ordering Source (<) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool Source (<=) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool Source (>) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool Source (>=) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool Source max :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) Source min :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i) => Ord (a, b, c, d, e, f, g, h, i) | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j) => Ord (a, b, c, d, e, f, g, h, i, j) | |
Defined in GHC.Classes Methodscompare :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Ordering Source (<) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool Source (<=) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool Source (>) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool Source (>=) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool Source max :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) Source min :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k) => Ord (a, b, c, d, e, f, g, h, i, j, k) | |
Defined in GHC.Classes Methodscompare :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Ordering Source (<) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool Source (<=) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool Source (>) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool Source (>=) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool Source max :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) Source min :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l) => Ord (a, b, c, d, e, f, g, h, i, j, k, l) | |
Defined in GHC.Classes Methodscompare :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Ordering Source (<) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool Source (<=) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool Source (>) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool Source (>=) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool Source max :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) Source min :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) Source | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m) | |
Определено в GHC.Classes Методыcompare :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Ordering Источник (<) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool Источник (<=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool Источник (>) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool Источник (>=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool Источник max :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) Источник min :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) Источник | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | |
Определено в GHC.Classes Методыcompare :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Ordering Источник (<) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool Источник (<=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool Источник (>) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool Источник (>=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool Источник max :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Источник min :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Источник | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | |
Определено в GHC.Classes Методыcompare :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Ordering Источник (<) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool Источник (<=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool Источник (>) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool Источник (>=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool Источник max :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Источник min :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Источник | |
Класс Enum определяет операции над типами с последовательной упорядоченностью.
Методы enumFrom... используются в Haskell при преобразовании арифметических последовательностей.
Экземпляры Enum могут быть выведены для любого типа перечисления (типы, конструкторы которых не имеют полей). Предполагается, что нульарные конструкторы пронумерованы слева направо с помощью fromEnum от 0 до n-1. Более подробная информация приведена в главе 10 отчета Haskell Report.
Для любого типа, являющегося экземпляром класса Bounded, а также Enum, должно выполняться следующее:
- Вызовы
succ maxBoundиpred minBoundдолжны приводить к ошибке времени выполнения. -
fromEnumиtoEnumдолжны вызывать ошибку времени выполнения, если результирующее значение не представимо в результирующем типе. Например,toEnum 7 :: Boolявляется ошибкой. -
enumFromиenumFromThenдолжны быть определены с неявным ограничением, таким образом:
enumFrom x = enumFromTo x maxBound
enumFromThen x y = enumFromThenTo x y bound
where
bound | fromEnum y >= fromEnum x = maxBound
| otherwise = minBound
Краткое описание методов
преемник значения. Для числовых типов, succ добавляет 1.
предшественник значения. Для числовых типов, pred вычитает 1.
Преобразование из Int.
Преобразование в Int. Результат работы fromEnum при применении к значению, слишком большому для размещения в Int, зависит от реализации.
Используется в Haskell-переводе [n..] с [n..] = enumFrom n, возможная реализация - enumFrom n = n : enumFrom (succ n). Например:
enumFrom 4 :: [Integer] = [4,5,6,7,...]
enumFrom 6 :: [Int] = [6,7,8,9,...,maxBound :: Int]
enumFromThen :: a -> a -> [a] Source
Используется в Haskell-переводе [n,n'..] с [n,n'..] = enumFromThen n n', возможная реализация - enumFromThen n n' = n : n' : worker (f x) (f x n'), worker s v = v : worker s (s v), x = fromEnum n' - fromEnum n и f n y
| n > 0 = f (n - 1) (succ y)
| n < 0 = f (n + 1) (pred y)
| otherwise = y. Например:
enumFromThen 4 6 :: [Integer] = [4,6,8,10...]
enumFromThen 6 2 :: [Int] = [6,2,-2,-6,...,minBound :: Int]
enumFromTo :: a -> a -> [a] Source
Используется в Haskell-переводе [n..m] с [n..m] = enumFromTo n m, возможная реализация - enumFromTo n m
| n <= m = n : enumFromTo (succ n) m
| otherwise = []. Например:
enumFromTo 6 10 :: [Int] = [6,7,8,9,10]
enumFromTo 42 1 :: [Integer] = []
enumFromThenTo :: a -> a -> a -> [a] Source
Используется в Haskell-переводе [n,n'..m] с [n,n'..m] = enumFromThenTo n n' m, возможная реализация - enumFromThenTo n n' m = worker (f x) (c x) n m, x = fromEnum n' - fromEnum n, c x = bool (>=) ((x 0) f n y
| n > 0 = f (n - 1) (succ y)
| n < 0 = f (n + 1) (pred y)
| otherwise = y и worker s c v m
| c v m = v : worker s c (s v) m
| otherwise = []. Например:
enumFromThenTo 4 2 -6 :: [Integer] = [4,2,0,-2,-4,-6]
enumFromThenTo 6 8 2 :: [Int] = []
Экземпляры
| Enum Bool | С версии: base-2.1 |
| Enum Char | С версии: base-2.1 |
| Enum Double | С версии: base-2.1 |
Определено в GHC.Float Методыsucc :: Double -> Double Источник pred :: Double -> Double Источник toEnum :: Int -> Double Источник fromEnum :: Double -> Int Источник enumFrom :: Double -> [Double] Источник enumFromThen :: Double -> Double -> [Double] Источник enumFromTo :: Double -> Double -> [Double] Источник enumFromThenTo :: Double -> Double -> Double -> [Double] Источник | |
| Enum Float | С версии: base-2.1 |
| Enum Int | Since: base-2.1 |
Определено в GHC.Enum | |
| Enum Int8 | Since: base-2.1 |
| Enum Int16 | Since: base-2.1 |
| Enum Word8 | С версии: base-2.1 |
Определено в GHC.Word Краткое описание методовsucc :: Word8 -> Word8 Источник pred :: Word8 -> Word8 Источник toEnum :: Int -> Word8 Источник fromEnum :: Word8 -> Int Источник enumFrom :: Word8 -> [Word8] Источник enumFromThen :: Word8 -> Word8 -> [Word8] Источник enumFromTo :: Word8 -> Word8 -> [Word8] Источник enumFromThenTo :: Word8 -> Word8 -> Word8 -> [Word8] Источник | |
| Enum Word16 | С версии: base-2.1 |
Определено в GHC.Word Краткое описание методовsucc :: Word16 -> Word16 Источник pred :: Word16 -> Word16 Источник toEnum :: Int -> Word16 Источник fromEnum :: Word16 -> Int Источник enumFrom :: Word16 -> [Word16] Источник enumFromThen :: Word16 -> Word16 -> [Word16] Источник enumFromTo :: Word16 -> Word16 -> [Word16] Источник enumFromThenTo :: Word16 -> Word16 -> Word16 -> [Word16] Источник | |
| Enum Word32 | С версии: base-2.1 |
Определено в GHC.Enum Методыsucc :: VecElem -> VecElem Source pred :: VecElem -> VecElem Source toEnum :: Int -> VecElem Source fromEnum :: VecElem -> Int Source enumFrom :: VecElem -> [VecElem] Source enumFromThen :: VecElem -> VecElem -> [VecElem] Source enumFromTo :: VecElem -> VecElem -> [VecElem] Source enumFromThenTo :: VecElem -> VecElem -> VecElem -> [VecElem] Source | |
| Enum () | Since: base-2.1 |
| Enum GeneralCategory | Since: base-2.1 |
Определено в GHC.Unicode Методыsucc :: GeneralCategory -> GeneralCategory Source pred :: GeneralCategory -> GeneralCategory Source toEnum :: Int -> GeneralCategory Source fromEnum :: GeneralCategory -> Int Source enumFrom :: GeneralCategory -> [GeneralCategory] Source enumFromThen :: GeneralCategory -> GeneralCategory -> [GeneralCategory] Source enumFromTo :: GeneralCategory -> GeneralCategory -> [GeneralCategory] Source enumFromThenTo :: GeneralCategory -> GeneralCategory -> GeneralCategory -> [GeneralCategory] Source | |
| Enum IOMode | Since: base-4.2.0.0 |
| Enum CClock | |
Определено в Foreign.C.Types Краткое описание методовsucc :: CClock -> CClock Source pred :: CClock -> CClock Source toEnum :: Int -> CClock Source fromEnum :: CClock -> Int Source enumFrom :: CClock -> [CClock] Source enumFromThen :: CClock -> CClock -> [CClock] Source enumFromTo :: CClock -> CClock -> [CClock] Source enumFromThenTo :: CClock -> CClock -> CClock -> [CClock] Source | |
| Enum CSigAtomic | |
Определено в Foreign.C.Types Краткое описание методовsucc :: CSigAtomic -> CSigAtomic Source pred :: CSigAtomic -> CSigAtomic Source toEnum :: Int -> CSigAtomic Source fromEnum :: CSigAtomic -> Int Source enumFrom :: CSigAtomic -> [CSigAtomic] Source enumFromThen :: CSigAtomic -> CSigAtomic -> [CSigAtomic] Source enumFromTo :: CSigAtomic -> CSigAtomic -> [CSigAtomic] Source enumFromThenTo :: CSigAtomic -> CSigAtomic -> CSigAtomic -> [CSigAtomic] Source | |
| Enum CWchar | |
Определено в Foreign.C.Types Краткое описание методовsucc :: CDouble -> CDouble Source pred :: CDouble -> CDouble Source toEnum :: Int -> CDouble Source fromEnum :: CDouble -> Int Source enumFrom :: CDouble -> [CDouble] Source enumFromThen :: CDouble -> CDouble -> [CDouble] Source enumFromTo :: CDouble -> CDouble -> [CDouble] Source enumFromThenTo :: CDouble -> CDouble -> CDouble -> [CDouble] Source | |
| Enum CFloat | |
Определено в Foreign.C.Types Краткое описание методовsucc :: CFloat -> CFloat Source pred :: CFloat -> CFloat Source toEnum :: Int -> CFloat Source fromEnum :: CFloat -> Int Source enumFrom :: CFloat -> [CFloat] Source enumFromThen :: CFloat -> CFloat -> [CFloat] Source enumFromTo :: CFloat -> CFloat -> [CFloat] Source enumFromThenTo :: CFloat -> CFloat -> CFloat -> [CFloat] Source | |
| Enum CBool | |
| Enum CULLong | |
Определено в GHC.IO.Device Краткое описание методовsucc :: SeekMode -> SeekMode Source pred :: SeekMode -> SeekMode Source toEnum :: Int -> SeekMode Source fromEnum :: SeekMode -> Int Source enumFrom :: SeekMode -> [SeekMode] Source enumFromThen :: SeekMode -> SeekMode -> [SeekMode] Source enumFromTo :: SeekMode -> SeekMode -> [SeekMode] Source enumFromThenTo :: SeekMode -> SeekMode -> SeekMode -> [SeekMode] Source | |
| Enum Fd | |
Определено в System.Posix.Types | |
| Enum CNfds | |
| Enum CSocklen | |
Определено в System.Posix.Types Краткое описание методовsucc :: CSocklen -> CSocklen Source pred :: CSocklen -> CSocklen Source toEnum :: Int -> CSocklen Source fromEnum :: CSocklen -> Int Source enumFrom :: CSocklen -> [CSocklen] Source enumFromThen :: CSocklen -> CSocklen -> [CSocklen] Source enumFromTo :: CSocklen -> CSocklen -> [CSocklen] Source enumFromThenTo :: CSocklen -> CSocklen -> CSocklen -> [CSocklen] Source | |
| Enum CKey | |
| Enum CId | |
Определено в System.Posix.Types | |
| Enum CFsFilCnt | |
Определено в System.Posix.Types Краткое описание методовsucc :: CBlkCnt -> CBlkCnt Source pred :: CBlkCnt -> CBlkCnt Source toEnum :: Int -> CBlkCnt Source fromEnum :: CBlkCnt -> Int Source enumFrom :: CBlkCnt -> [CBlkCnt] Source enumFromThen :: CBlkCnt -> CBlkCnt -> [CBlkCnt] Source enumFromTo :: CBlkCnt -> CBlkCnt -> [CBlkCnt] Source enumFromThenTo :: CBlkCnt -> CBlkCnt -> CBlkCnt -> [CBlkCnt] Source | |
| Enum CBlkSize | |
Определено в System.Posix.Types Краткое описание методовsucc :: CBlkSize -> CBlkSize Source pred :: CBlkSize -> CBlkSize Source toEnum :: Int -> CBlkSize Source fromEnum :: CBlkSize -> Int Source enumFrom :: CBlkSize -> [CBlkSize] Source enumFromThen :: CBlkSize -> CBlkSize -> [CBlkSize] Source enumFromTo :: CBlkSize -> CBlkSize -> [CBlkSize] Source enumFromThenTo :: CBlkSize -> CBlkSize -> CBlkSize -> [CBlkSize] Source | |
| Enum CRLim | |
| Enum CTcflag | |
Определено в System.Posix.Types Краткое описание методовsucc :: CTcflag -> CTcflag Source pred :: CTcflag -> CTcflag Source toEnum :: Int -> CTcflag Source fromEnum :: CTcflag -> Int Source enumFrom :: CTcflag -> [CTcflag] Source enumFromThen :: CTcflag -> CTcflag -> [CTcflag] Source enumFromTo :: CTcflag -> CTcflag -> [CTcflag] Source enumFromThenTo :: CTcflag -> CTcflag -> CTcflag -> [CTcflag] Source | |
| Enum CSpeed | |
Определено в System.Posix.Types Краткое описание методовsucc :: CSpeed -> CSpeed Source pred :: CSpeed -> CSpeed Source toEnum :: Int -> CSpeed Source fromEnum :: CSpeed -> Int Source enumFrom :: CSpeed -> [CSpeed] Source enumFromThen :: CSpeed -> CSpeed -> [CSpeed] Source enumFromTo :: CSpeed -> CSpeed -> [CSpeed] Source enumFromThenTo :: CSpeed -> CSpeed -> CSpeed -> [CSpeed] Source | |
| Enum CCc | |
Определено в System.Posix.Types | |
| Enum CUid | |
Определено в System.Posix.Types Краткое описание методовsucc :: CSsize -> CSsize Source pred :: CSsize -> CSsize Source toEnum :: Int -> CSsize Source fromEnum :: CSsize -> Int Source enumFrom :: CSsize -> [CSsize] Source enumFromThen :: CSsize -> CSsize -> [CSsize] Source enumFromTo :: CSsize -> CSsize -> [CSsize] Source enumFromThenTo :: CSsize -> CSsize -> CSsize -> [CSsize] Source | |
| Enum CPid | |
| Enum COff | |
| Enum CMode | |
Определено в System.Posix.Types Краткое описание методовsucc :: CMode -> CMode Источник pred :: CMode -> CMode Источник toEnum :: Int -> CMode Источник fromEnum :: CMode -> Int Источник enumFrom :: CMode -> [CMode] Источник enumFromThen :: CMode -> CMode -> [CMode] Источник enumFromTo :: CMode -> CMode -> [CMode] Источник enumFromThenTo :: CMode -> CMode -> CMode -> [CMode] Источник | |
| Enum CIno | |
| Enum CDev | |
| Enum ByteOrder | С версии: base-4.11.0.0 |
Определено в Data.Semigroup Краткое описание методовsucc :: Last a -> Last a Source pred :: Last a -> Last a Source toEnum :: Int -> Last a Source fromEnum :: Last a -> Int Source enumFrom :: Last a -> [Last a] Source enumFromThen :: Last a -> Last a -> [Last a] Source enumFromTo :: Last a -> Last a -> [Last a] Source enumFromThenTo :: Last a -> Last a -> Last a -> [Last a] Source | |
| Enum a => Enum (First a) | С версии: base-4.9.0.0 |
Определено в Data.Semigroup Краткое описание методовsucc :: First a -> First a Source pred :: First a -> First a Source toEnum :: Int -> First a Source fromEnum :: First a -> Int Source enumFrom :: First a -> [First a] Source enumFromThen :: First a -> First a -> [First a] Source enumFromTo :: First a -> First a -> [First a] Source enumFromThenTo :: First a -> First a -> First a -> [First a] Source | |
| Enum a => Enum (Max a) | С версии: base-4.9.0.0 |
| Enum a => Enum (Min a) | С версии: base-4.9.0.0 |
| Enum (Proxy s) | С версии: base-4.7.0.0 |
Определено в Data.Proxy Краткое описание методовsucc :: Proxy s -> Proxy s Source pred :: Proxy s -> Proxy s Source toEnum :: Int -> Proxy s Source fromEnum :: Proxy s -> Int Source enumFrom :: Proxy s -> [Proxy s] Source enumFromThen :: Proxy s -> Proxy s -> [Proxy s] Source enumFromTo :: Proxy s -> Proxy s -> [Proxy s] Source enumFromThenTo :: Proxy s -> Proxy s -> Proxy s -> [Proxy s] Source | |
| Enum (Fixed a) | С версии: base-2.1 |
Определено в Data.Fixed Краткое описание методовsucc :: Fixed a -> Fixed a Source pred :: Fixed a -> Fixed a Source toEnum :: Int -> Fixed a Source fromEnum :: Fixed a -> Int Source enumFrom :: Fixed a -> [Fixed a] Source enumFromThen :: Fixed a -> Fixed a -> [Fixed a] Source enumFromTo :: Fixed a -> Fixed a -> [Fixed a] Source enumFromThenTo :: Fixed a -> Fixed a -> Fixed a -> [Fixed a] Source | |
| a ~ b => Enum (a :~: b) | С версии: base-4.7.0.0 |
Определено в Data.Type.Equality Методыsucc :: (a :~: b) -> a :~: b Source pred :: (a :~: b) -> a :~: b Source toEnum :: Int -> a :~: b Source fromEnum :: (a :~: b) -> Int Source enumFrom :: (a :~: b) -> [a :~: b] Source enumFromThen :: (a :~: b) -> (a :~: b) -> [a :~: b] Source enumFromTo :: (a :~: b) -> (a :~: b) -> [a :~: b] Source enumFromThenTo :: (a :~: b) -> (a :~: b) -> (a :~: b) -> [a :~: b] Source | |
| Coercible a b => Enum (Coercion a b) | Since: base-4.7.0.0 |
Определено в Data.Type.Coercion Методыsucc :: Coercion a b -> Coercion a b Source pred :: Coercion a b -> Coercion a b Source toEnum :: Int -> Coercion a b Source fromEnum :: Coercion a b -> Int Source enumFrom :: Coercion a b -> [Coercion a b] Source enumFromThen :: Coercion a b -> Coercion a b -> [Coercion a b] Source enumFromTo :: Coercion a b -> Coercion a b -> [Coercion a b] Source enumFromThenTo :: Coercion a b -> Coercion a b -> Coercion a b -> [Coercion a b] Source | |
| Enum (f a) => Enum (Alt f a) | Since: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методыsucc :: Alt f a -> Alt f a Source pred :: Alt f a -> Alt f a Source toEnum :: Int -> Alt f a Source fromEnum :: Alt f a -> Int Source enumFrom :: Alt f a -> [Alt f a] Source enumFromThen :: Alt f a -> Alt f a -> [Alt f a] Source enumFromTo :: Alt f a -> Alt f a -> [Alt f a] Source enumFromThenTo :: Alt f a -> Alt f a -> Alt f a -> [Alt f a] Source | |
| Enum (f a) => Enum (Ap f a) | Since: base-4.12.0.0 |
Определено в Data.Monoid Методыsucc :: Ap f a -> Ap f a Source pred :: Ap f a -> Ap f a Source toEnum :: Int -> Ap f a Source fromEnum :: Ap f a -> Int Source enumFrom :: Ap f a -> [Ap f a] Source enumFromThen :: Ap f a -> Ap f a -> [Ap f a] Source enumFromTo :: Ap f a -> Ap f a -> [Ap f a] Source enumFromThenTo :: Ap f a -> Ap f a -> Ap f a -> [Ap f a] Source | |
| Enum a => Enum (Const a b) | Since: base-4.9.0.0 |
Определено в Data.Functor.Const Методыsucc :: Const a b -> Const a b Source pred :: Const a b -> Const a b Source toEnum :: Int -> Const a b Source fromEnum :: Const a b -> Int Source enumFrom :: Const a b -> [Const a b] Source enumFromThen :: Const a b -> Const a b -> [Const a b] Source enumFromTo :: Const a b -> Const a b -> [Const a b] Source enumFromThenTo :: Const a b -> Const a b -> Const a b -> [Const a b] Source | |
| a ~~ b => Enum (a :~~: b) | Since: base-4.10.0.0 |
Определено в Data.Type.Equality Методыsucc :: (a :~~: b) -> a :~~: b Source pred :: (a :~~: b) -> a :~~: b Source toEnum :: Int -> a :~~: b Source fromEnum :: (a :~~: b) -> Int Source enumFrom :: (a :~~: b) -> [a :~~: b] Source enumFromThen :: (a :~~: b) -> (a :~~: b) -> [a :~~: b] Source enumFromTo :: (a :~~: b) -> (a :~~: b) -> [a :~~: b] Source enumFromThenTo :: (a :~~: b) -> (a :~~: b) -> (a :~~: b) -> [a :~~: b] Source | |
Класс Bounded используется для именования верхних и нижних границ типа. Ord не является надклассом Bounded, поскольку типы, которые не являются полностью упорядоченными, могут также иметь верхние и нижние границы.
Класс Bounded может быть выведен для любого типа перечисления; minBound является первым конструктором, перечисленным в объявлении data, а maxBound — последним. Bounded также может быть выведен для типов данных с одним конструктором, составные типы которых находятся в Bounded.
| Bounded Bool | С версии: base-2.1 |
| Bounded Char | С версии: base-2.1 |
| Bounded Int | С версии: base-2.1 |
| Bounded Int8 | С версии: base-2.1 |
| Bounded Int16 | С версии: base-2.1 |
| Bounded Int32 | С версии: base-2.1 |
| Bounded Int64 | С версии: base-2.1 |
| Bounded Ordering | С версии: base-2.1 |
| Bounded Word | С версии: base-2.1 |
| Bounded Word8 | С версии: base-2.1 |
| Bounded Word16 | С версии: base-2.1 |
| Bounded Word32 | С версии: base-2.1 |
| Bounded Word64 | Since: base-2.1 |
| Bounded VecCount | Since: base-4.10.0.0 |
| Bounded VecElem | Since: base-4.10.0.0 |
| Bounded () | Since: base-2.1 |
| Bounded GeneralCategory | Since: base-2.1 |
Defined in GHC.Unicode | |
| Bounded IntPtr | |
| Bounded WordPtr | |
| Bounded CUIntMax | |
| Bounded CIntMax | |
| Bounded CUIntPtr | |
| Bounded CIntPtr | |
| Bounded CSigAtomic | |
| Bounded CShort | |
| Bounded CUChar | |
| Bounded CSChar | |
| Bounded CChar | |
| Bounded DecidedStrictness | Since: base-4.9.0.0 |
Определено в GHC.Generics | |
| Bounded SourceStrictness | Since: base-4.9.0.0 |
Определено в GHC.Generics | |
| Bounded SourceUnpackedness | Since: base-4.9.0.0 |
Определено в GHC.Generics | |
| Bounded Associativity | Since: base-4.9.0.0 |
Определено в GHC.Generics | |
| Bounded Any | Since: base-2.1 |
| Bounded All | Since: base-2.1 |
| Bounded Fd | |
| Bounded CNfds | |
| Bounded a => Bounded (Sum a) | Since: base-2.1 |
| Bounded a => Bounded (Dual a) | Since: base-2.1 |
| Bounded a => Bounded (Identity a) | Since: base-4.9.0.0 |
| Bounded m => Bounded (WrappedMonoid m) | Since: base-4.9.0.0 |
Defined in Data.Semigroup | |
| Bounded a => Bounded (Last a) | Since: base-4.9.0.0 |
| Bounded a => Bounded (First a) | Since: base-4.9.0.0 |
| Bounded a => Bounded (Max a) | Since: base-4.9.0.0 |
| Bounded a => Bounded (Min a) | Since: base-4.9.0.0 |
| (Bounded a, Bounded b) => Bounded (a, b) | Since: base-2.1 |
| Bounded (Proxy t) | Since: base-4.7.0.0 |
| (Bounded a, Bounded b, Bounded c) => Bounded (a, b, c) | Since: base-2.1 |
| a ~ b => Bounded (a :~: b) | Since: base-4.7.0.0 |
| Coercible a b => Bounded (Coercion a b) | Since: base-4.7.0.0 |
| (Applicative f, Bounded a) => Bounded (Ap f a) | Since: base-4.12.0.0 |
| Bounded a => Bounded (Const a b) | Since: base-4.9.0.0 |
| (Bounded a, Bounded b, Bounded c, Bounded d) => Bounded (a, b, c, d) | Since: base-2.1 |
| a ~~ b => Bounded (a :~~: b) | Since: base-4.10.0.0 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e) => Bounded (a, b, c, d, e) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f) => Bounded (a, b, c, d, e, f) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g) => Bounded (a, b, c, d, e, f, g) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h) => Bounded (a, b, c, d, e, f, g, h) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i) => Bounded (a, b, c, d, e, f, g, h, i) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j) => Bounded (a, b, c, d, e, f, g, h, i, j) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k) => Bounded (a, b, c, d, e, f, g, h, i, j, k) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m) | Since: base-2.1 |
| (Bounded a, Bounded b, Bounded c, Bounded d, Bounded e, Bounded f, Bounded g, Bounded h, Bounded i, Bounded j, Bounded k, Bounded l, Bounded m, Bounded n) => Bounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | Since: base-2.1 |
Числа
Числовые типы
Тип целого числа с фиксированной точностью, имеющий диапазон не менее [-2^29 .. 2^29-1]. Точный диапазон для данной реализации может быть определен с помощью minBound и maxBound из класса Bounded.
Определено в Data.Data Краткое описание методовgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Int -> c Int Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Int Source toConstr :: Int -> Constr Source dataTypeOf :: Int -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Int) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Int) Source gmapT :: (forall b. Data b => b -> b) -> Int -> Int Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Int -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Int -> r Source gmapQ :: (forall d. Data d => d -> u) -> Int -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Int -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Int -> m Int Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Int -> m Int Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Int -> m Int Source | |
| Num Int | С версии: base-2.1 |
| Ord Int | |
| Read Int | С версии: base-2.1 |
| Real Int | Since: base-2.0.1 |
Определено в GHC.Real Краткое описание методовtoRational :: Int -> Rational Source | |
| Show Int | Since: base-2.1 |
| Ix Int | Since: base-2.1 |
| FiniteBits Int | Since: base-4.6.0.0 |
Определено в Data.Bits Краткое описание методовfiniteBitSize :: Int -> Int Source countLeadingZeros :: Int -> Int Source countTrailingZeros :: Int -> Int Source | |
| Bits Int | Since: base-2.1 |
Определено в Text.Printf Краткое описание методовformatArg :: Int -> FieldFormatter Source parseFormat :: Int -> ModifierParser Source | |
| Generic1 (URec Int :: k -> Type) | Since: base-4.9.0.0 |
| Foldable (UInt :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UInt m -> m Source foldMap :: Monoid m => (a -> m) -> UInt a -> m Source foldMap' :: Monoid m => (a -> m) -> UInt a -> m Source foldr :: (a -> b -> b) -> b -> UInt a -> b Source foldr' :: (a -> b -> b) -> b -> UInt a -> b Source foldl :: (b -> a -> b) -> b -> UInt a -> b Source foldl' :: (b -> a -> b) -> b -> UInt a -> b Source foldr1 :: (a -> a -> a) -> UInt a -> a Source foldl1 :: (a -> a -> a) -> UInt a -> a Source toList :: UInt a -> [a] Source length :: UInt a -> Int Source elem :: Eq a => a -> UInt a -> Bool Source maximum :: Ord a => UInt a -> a Source minimum :: Ord a => UInt a -> a Source | |
| Traversable (UInt :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| Functor (URec Int :: Type -> Type) | Since: base-4.9.0.0 |
| Eq (URec Int p) | С версии: base-4.9.0.0 |
| Ord (URec Int p) | С версии: base-4.9.0.0 |
Определено в GHC.Generics Методыcompare :: URec Int p -> URec Int p -> Ordering Источник (<) :: URec Int p -> URec Int p -> Bool Источник (<=) :: URec Int p -> URec Int p -> Bool Источник (>) :: URec Int p -> URec Int p -> Bool Источник (>=) :: URec Int p -> URec Int p -> Bool Источник | |
| Show (URec Int p) | С версии: base-4.9.0.0 |
| Generic (URec Int p) | С версии: base-4.9.0.0 |
| data URec Int (p :: k) |
Используется для маркировки вхождений С версии: base-4.9.0.0 |
| type Rep1 (URec Int :: k -> Type) | |
Определено в GHC.Generics | |
| type Rep (URec Int p) | |
Определено в GHC.Generics | |
Целые числа произвольной точности. В отличие от целочисленных типов фиксированного размера, таких как Int, тип Integer представляет весь бесконечный диапазон целых чисел.
Для получения дополнительной информации о представлении этого типа см. комментарии в его реализации.
Экземпляры
| Enum Integer | Since: base-2.1 |
Определено в GHC.Enum Методыsucc :: Integer -> Integer Source pred :: Integer -> Integer Source toEnum :: Int -> Integer Source fromEnum :: Integer -> Int Source enumFrom :: Integer -> [Integer] Source enumFromThen :: Integer -> Integer -> [Integer] Source enumFromTo :: Integer -> Integer -> [Integer] Source enumFromThenTo :: Integer -> Integer -> Integer -> [Integer] Source | |
| Eq Integer | |
| Integral Integer | Since: base-2.0.1 |
Определено в GHC.Real Методыquot :: Integer -> Integer -> Integer Source rem :: Integer -> Integer -> Integer Source div :: Integer -> Integer -> Integer Source mod :: Integer -> Integer -> Integer Source quotRem :: Integer -> Integer -> (Integer, Integer) Source | |
| Data Integer | Since: base-4.0.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Integer -> c Integer Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Integer Source toConstr :: Integer -> Constr Source dataTypeOf :: Integer -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Integer) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Integer) Source gmapT :: (forall b. Data b => b -> b) -> Integer -> Integer Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Integer -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Integer -> r Source gmapQ :: (forall d. Data d => d -> u) -> Integer -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Integer -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Integer -> m Integer Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Integer -> m Integer Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Integer -> m Integer Source | |
| Num Integer | Since: base-2.1 |
Определено в GHC.Num | |
| Ord Integer | |
| Read Integer | Since: base-2.1 |
| Real Integer | Since: base-2.0.1 |
Определено в GHC.Real МетодыtoRational :: Integer -> Rational Source | |
| Show Integer | Since: base-2.1 |
| Ix Integer | Since: base-2.1 |
Определено в GHC.Ix Методыrange :: (Integer, Integer) -> [Integer] Source index :: (Integer, Integer) -> Integer -> Int Source unsafeIndex :: (Integer, Integer) -> Integer -> Int Source inRange :: (Integer, Integer) -> Integer -> Bool Source rangeSize :: (Integer, Integer) -> Int Source unsafeRangeSize :: (Integer, Integer) -> Int Source | |
| Bits Integer | Since: base-2.1 |
Определено в Data.Bits Краткое описание методов(.&.) :: Integer -> Integer -> Integer Source (.|.) :: Integer -> Integer -> Integer Source xor :: Integer -> Integer -> Integer Source complement :: Integer -> Integer Source shift :: Integer -> Int -> Integer Source rotate :: Integer -> Int -> Integer Source setBit :: Integer -> Int -> Integer Source clearBit :: Integer -> Int -> Integer Source complementBit :: Integer -> Int -> Integer Source testBit :: Integer -> Int -> Bool Source bitSizeMaybe :: Integer -> Maybe Int Source bitSize :: Integer -> Int Source isSigned :: Integer -> Bool Source shiftL :: Integer -> Int -> Integer Source unsafeShiftL :: Integer -> Int -> Integer Source shiftR :: Integer -> Int -> Integer Source unsafeShiftR :: Integer -> Int -> Integer Source rotateL :: Integer -> Int -> Integer Source | |
| PrintfArg Integer | Since: base-2.1 |
Определено в Text.Printf Краткое описание методовformatArg :: Integer -> FieldFormatter Source | |
Числа с плавающей точкой одинарной точности. Желательно, чтобы диапазон и точность этого типа были как минимум равны диапазону и точности типа IEEE одинарной точности.
Экземпляры
| Enum Float | С версии: base-2.1 |
| Eq Float |
Обратите внимание, что из-за наличия >>> 0/0 == (0/0 :: Float) False Также обратите внимание, что пример >>> 0 == (-0 :: Float) True >>> recip 0 == recip (-0 :: Float) False |
| Floating Float | С версии: base-2.1 |
| Fractional Float |
Обратите внимание, что из-за наличия >>> 0/0 * (recip 0/0 :: Float) NaN Since: base-2.1 |
| Data Float | Since: base-4.0.0.0 |
Defined in Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Float -> c Float Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Float Source toConstr :: Float -> Constr Source dataTypeOf :: Float -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Float) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Float) Source gmapT :: (forall b. Data b => b -> b) -> Float -> Float Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Float -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Float -> r Source gmapQ :: (forall d. Data d => d -> u) -> Float -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Float -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Float -> m Float Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Float -> m Float Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Float -> m Float Source | |
| Num Float |
Обратите внимание, что из-за наличия >>> 0/0 + (negate 0/0 :: Float) NaN Также обратите внимание, что из-за наличия -0, экземпляр >>> 0 + (-0 :: Float) 0.0 Since: base-2.1 |
| Ord Float |
Обратите внимание, что из-за наличия >>> 0/0 <= (0/0 :: Float) False Также обратите внимание, что из-за того же, взаимодействия операторов >>> (0/0 :: Float) > 1 False >>> compare (0/0 :: Float) 1 GT |
Определено в GHC.Classes | |
| Read Float | Since: base-2.1 |
| Real Float | Since: base-2.1 |
Определено в GHC.Float МетодыtoRational :: Float -> Rational Source | |
| RealFloat Float | Since: base-2.1 |
Определено в GHC.Float МетодыfloatRadix :: Float -> Integer Source floatDigits :: Float -> Int Source floatRange :: Float -> (Int, Int) Source decodeFloat :: Float -> (Integer, Int) Source encodeFloat :: Integer -> Int -> Float Source exponent :: Float -> Int Source significand :: Float -> Float Source scaleFloat :: Int -> Float -> Float Source isInfinite :: Float -> Bool Source isDenormalized :: Float -> Bool Source isNegativeZero :: Float -> Bool Source | |
| RealFrac Float | Since: base-2.1 |
| Show Float | Since: base-2.1 |
| Storable Float | Since: base-2.1 |
Определено в Foreign.Storable | |
| PrintfArg Float | Since: base-2.1 |
Определено в Text.Printf | |
| Generic1 (URec Float :: k -> Type) | Since: base-4.9.0.0 |
| Foldable (UFloat :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UFloat m -> m Source foldMap :: Monoid m => (a -> m) -> UFloat a -> m Source foldMap' :: Monoid m => (a -> m) -> UFloat a -> m Source foldr :: (a -> b -> b) -> b -> UFloat a -> b Source foldr' :: (a -> b -> b) -> b -> UFloat a -> b Source foldl :: (b -> a -> b) -> b -> UFloat a -> b Source foldl' :: (b -> a -> b) -> b -> UFloat a -> b Source foldr1 :: (a -> a -> a) -> UFloat a -> a Source foldl1 :: (a -> a -> a) -> UFloat a -> a Source toList :: UFloat a -> [a] Source null :: UFloat a -> Bool Source length :: UFloat a -> Int Source elem :: Eq a => a -> UFloat a -> Bool Source maximum :: Ord a => UFloat a -> a Source minimum :: Ord a => UFloat a -> a Source | |
| Traversable (UFloat :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| Functor (URec Float :: Type -> Type) | Since: base-4.9.0.0 |
| Eq (URec Float p) | |
| Ord (URec Float p) | |
Определено в GHC.Generics Краткое описание методовcompare :: URec Float p -> URec Float p -> Ordering Source (<) :: URec Float p -> URec Float p -> Bool Source (<=) :: URec Float p -> URec Float p -> Bool Source (>) :: URec Float p -> URec Float p -> Bool Source (>=) :: URec Float p -> URec Float p -> Bool Source | |
| Show (URec Float p) | |
| Generic (URec Float p) | |
| data URec Float (p :: k) |
Используется для маркировки вхождений Since: base-4.9.0.0 |
| type Rep1 (URec Float :: k -> Type) | |
Определено в GHC.Generics | |
| type Rep (URec Float p) | |
Определено в GHC.Generics | |
Числа с плавающей точкой двойной точности. Желательно, чтобы диапазон и точность этого типа были как минимум равны типу двойной точности IEEE.
Экземпляры
| Enum Double | Since: base-2.1 |
Определено в GHC.Float Методыsucc :: Double -> Double Source pred :: Double -> Double Source toEnum :: Int -> Double Source fromEnum :: Double -> Int Source enumFrom :: Double -> [Double] Source enumFromThen :: Double -> Double -> [Double] Source enumFromTo :: Double -> Double -> [Double] Source enumFromThenTo :: Double -> Double -> Double -> [Double] Source | |
| Eq Double |
Обратите внимание, что из-за наличия >>> 0/0 == (0/0 :: Double) False Также обратите внимание, что экземпляр >>> 0 == (-0 :: Double) True >>> recip 0 == recip (-0 :: Double) False |
| Floating Double | Since: base-2.1 |
Defined in GHC.Float Методыexp :: Double -> Double Source log :: Double -> Double Source sqrt :: Double -> Double Source (**) :: Double -> Double -> Double Source logBase :: Double -> Double -> Double Source sin :: Double -> Double Source cos :: Double -> Double Source tan :: Double -> Double Source asin :: Double -> Double Source acos :: Double -> Double Source atan :: Double -> Double Source sinh :: Double -> Double Source cosh :: Double -> Double Source tanh :: Double -> Double Source asinh :: Double -> Double Source acosh :: Double -> Double Source atanh :: Double -> Double Source log1p :: Double -> Double Source expm1 :: Double -> Double Source | |
| Fractional Double |
Обратите внимание, что из-за наличия >>> 0/0 * (recip 0/0 :: Double) NaN Since: base-2.1 |
| Data Double | Since: base-4.0.0.0 |
Определено в Data.Data Методыgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Double -> c Double Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Double Source toConstr :: Double -> Constr Source dataTypeOf :: Double -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Double) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Double) Source gmapT :: (forall b. Data b => b -> b) -> Double -> Double Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Double -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Double -> r Source gmapQ :: (forall d. Data d => d -> u) -> Double -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Double -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Double -> m Double Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Double -> m Double Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Double -> m Double Source | |
| Num Double |
Обратите внимание, что из-за наличия >>> 0/0 + (negate 0/0 :: Double) NaN Также обратите внимание, что из-за наличия -0, экземпляр >>> 0 + (-0 :: Double) 0.0 С версии: base-2.1 |
| Ord Double |
Обратите внимание, что из-за наличия >>> 0/0 <= (0/0 :: Double) False Также обратите внимание, что по той же причине, взаимодействие операторов >>> (0/0 :: Double) > 1 False >>> compare (0/0 :: Double) 1 GT |
Определено в GHC.Classes | |
| Read Double | Since: base-2.1 |
| Real Double | Since: base-2.1 |
Определено в GHC.Float МетодыtoRational :: Double -> Rational Source | |
| RealFloat Double | Since: base-2.1 |
Определено в GHC.Float МетодыfloatRadix :: Double -> Integer Source floatDigits :: Double -> Int Source floatRange :: Double -> (Int, Int) Source decodeFloat :: Double -> (Integer, Int) Source encodeFloat :: Integer -> Int -> Double Source exponent :: Double -> Int Source significand :: Double -> Double Source scaleFloat :: Int -> Double -> Double Source isNaN :: Double -> Bool Source isInfinite :: Double -> Bool Source isDenormalized :: Double -> Bool Source isNegativeZero :: Double -> Bool Source | |
| RealFrac Double | Since: base-2.1 |
| Show Double | Since: base-2.1 |
| Storable Double | Since: base-2.1 |
Определено в Foreign.Storable МетодыsizeOf :: Double -> Int Source alignment :: Double -> Int Source peekElemOff :: Ptr Double -> Int -> IO Double Source pokeElemOff :: Ptr Double -> Int -> Double -> IO () Source peekByteOff :: Ptr b -> Int -> IO Double Source pokeByteOff :: Ptr b -> Int -> Double -> IO () Source | |
| PrintfArg Double | Since: base-2.1 |
Определено в Text.Printf | |
| Generic1 (URec Double :: k -> Type) | Since: base-4.9.0.0 |
| Foldable (UDouble :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UDouble m -> m Source foldMap :: Monoid m => (a -> m) -> UDouble a -> m Source foldMap' :: Monoid m => (a -> m) -> UDouble a -> m Source foldr :: (a -> b -> b) -> b -> UDouble a -> b Source foldr' :: (a -> b -> b) -> b -> UDouble a -> b Source foldl :: (b -> a -> b) -> b -> UDouble a -> b Source foldl' :: (b -> a -> b) -> b -> UDouble a -> b Source foldr1 :: (a -> a -> a) -> UDouble a -> a Source foldl1 :: (a -> a -> a) -> UDouble a -> a Source toList :: UDouble a -> [a] Source null :: UDouble a -> Bool Source length :: UDouble a -> Int Source elem :: Eq a => a -> UDouble a -> Bool Source maximum :: Ord a => UDouble a -> a Source minimum :: Ord a => UDouble a -> a Source | |
| Traversable (UDouble :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| Functor (URec Double :: Type -> Type) | Since: base-4.9.0.0 |
| Eq (URec Double p) | Since: base-4.9.0.0 |
| Ord (URec Double p) | Since: base-4.9.0.0 |
Определено в GHC.Generics Методыcompare :: URec Double p -> URec Double p -> Ordering Source (<) :: URec Double p -> URec Double p -> Bool Source (<=) :: URec Double p -> URec Double p -> Bool Source (>) :: URec Double p -> URec Double p -> Bool Source (>=) :: URec Double p -> URec Double p -> Bool Source max :: URec Double p -> URec Double p -> URec Double p Source min :: URec Double p -> URec Double p -> URec Double p Source | |
| Show (URec Double p) | Since: base-4.9.0.0 |
| Generic (URec Double p) | Since: base-4.9.0.0 |
| data URec Double (p :: k) |
Используется для маркировки вхождений Since: base-4.9.0.0 |
| type Rep1 (URec Double :: k -> Type) | |
Определено в GHC.Generics | |
| type Rep (URec Double p) | |
Определено в GHC.Generics |
type Rational = Ratio Integer Source
Рациональные числа произвольной точности, представленные как отношение двух Integer значений. Рациональное число может быть построено с использованием оператора %.
Word — это беззнаковый целочисленный тип того же размера, что и Int.
Экземпляры
| Bounded Word | С версии: base-2.1 |
| Enum Word | С версии: base-2.1 |
| Eq Word | |
| Integral Word | С версии: base-2.1 |
| Data Word | С версии: base-4.0.0.0 |
Определено в Data.Data Краткое описание методовgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word -> c Word Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word Source toConstr :: Word -> Constr Source dataTypeOf :: Word -> DataType Source dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Word) Source dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word) Source gmapT :: (forall b. Data b => b -> b) -> Word -> Word Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word -> r Source gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word -> r Source gmapQ :: (forall d. Data d => d -> u) -> Word -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Word -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word -> m Word Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word -> m Word Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word -> m Word Source | |
| Num Word | С версии: base-2.1 |
| Ord Word | |
Определено в GHC.Classes | |
| Read Word | Since: base-4.5.0.0 |
| Real Word | Since: base-2.1 |
Defined in GHC.Real МетодыtoRational :: Word -> Rational Source | |
| Show Word | Since: base-2.1 |
| Ix Word | Since: base-4.6.0.0 |
| FiniteBits Word | Since: base-4.6.0.0 |
Defined in Data.Bits МетодыfiniteBitSize :: Word -> Int Source countLeadingZeros :: Word -> Int Source countTrailingZeros :: Word -> Int Source | |
| Bits Word | Since: base-2.1 |
Определено в Data.Bits Методы(.&.) :: Word -> Word -> Word Source (.|.) :: Word -> Word -> Word Source xor :: Word -> Word -> Word Source complement :: Word -> Word Source shift :: Word -> Int -> Word Source rotate :: Word -> Int -> Word Source setBit :: Word -> Int -> Word Source clearBit :: Word -> Int -> Word Source complementBit :: Word -> Int -> Word Source testBit :: Word -> Int -> Bool Source bitSizeMaybe :: Word -> Maybe Int Source isSigned :: Word -> Bool Source shiftL :: Word -> Int -> Word Source unsafeShiftL :: Word -> Int -> Word Source shiftR :: Word -> Int -> Word Source unsafeShiftR :: Word -> Int -> Word Source rotateL :: Word -> Int -> Word Source | |
| Storable Word | Since: base-2.1 |
Определено в Foreign.Storable | |
| PrintfArg Word | Since: base-2.1 |
Defined in Text.Printf | |
| Generic1 (URec Word :: k -> Type) | Since: base-4.9.0.0 |
| Foldable (UWord :: Type -> Type) | Since: base-4.9.0.0 |
Defined in Data.Foldable Методыfold :: Monoid m => UWord m -> m Source foldMap :: Monoid m => (a -> m) -> UWord a -> m Source foldMap' :: Monoid m => (a -> m) -> UWord a -> m Source foldr :: (a -> b -> b) -> b -> UWord a -> b Source foldr' :: (a -> b -> b) -> b -> UWord a -> b Source foldl :: (b -> a -> b) -> b -> UWord a -> b Source foldl' :: (b -> a -> b) -> b -> UWord a -> b Source foldr1 :: (a -> a -> a) -> UWord a -> a Source foldl1 :: (a -> a -> a) -> UWord a -> a Source toList :: UWord a -> [a] Source null :: UWord a -> Bool Source length :: UWord a -> Int Source elem :: Eq a => a -> UWord a -> Bool Source maximum :: Ord a => UWord a -> a Source minimum :: Ord a => UWord a -> a Source | |
| Traversable (UWord :: Type -> Type) | Since: base-4.9.0.0 |
| Functor (URec Word :: Type -> Type) | Since: base-4.9.0.0 |
| Eq (URec Word p) | Since: base-4.9.0.0 |
| Ord (URec Word p) | Since: base-4.9.0.0 |
Определено в GHC.Generics Методыcompare :: URec Word p -> URec Word p -> Ordering Source (<) :: URec Word p -> URec Word p -> Bool Source (<=) :: URec Word p -> URec Word p -> Bool Source (>) :: URec Word p -> URec Word p -> Bool Source (>=) :: URec Word p -> URec Word p -> Bool Source | |
| Show (URec Word p) | Since: base-4.9.0.0 |
| Generic (URec Word p) | Since: base-4.9.0.0 |
| data URec Word (p :: k) |
Используется для маркировки вхождений Since: base-4.9.0.0 |
| type Rep1 (URec Word :: k -> Type) | |
Определено в GHC.Generics | |
| type Rep (URec Word p) | |
Определено в GHC.Generics | |
Числовые классы типов
Базовый числовой класс.
В отчете Haskell не определены законы для Num. Однако, (+) и (*) обычно ожидается, что они определяют кольцо и обладают следующими свойствами:
- Ассоциативность
(+) -
(x + y) + z=x + (y + z) - Коммутативность
(+) -
x + y=y + x fromInteger 0является аддитивной единицей-
x + fromInteger 0=x negateдает аддитивный обратный-
x + negate x=fromInteger 0 - Ассоциативность
(*) -
(x * y) * z=x * (y * z) fromInteger 1является мультипликативной единицей-
x * fromInteger 1=xиfromInteger 1 * x=x - Дистрибутивность
(*)относительно(+) -
a * (b + c)=(a * b) + (a * c)и(b + c) * a=(b * a) + (c * a)
Обратите внимание, что не обычно ожидается, что экземпляр типа как Num, так и Ord реализует упорядоченное кольцо. Действительно, в base только Integer и Rational делают это.
Методы
(+) :: a -> a -> a infixl 6 Source
(-) :: a -> a -> a infixl 6 Source
(*) :: a -> a -> a infixl 7 Source
Унарное отрицание.
Абсолютное значение.
Знак числа. Функции abs и signum должны удовлетворять закону:
abs x * signum x == x
Для действительных чисел, signum равен либо -1 (отрицательный), 0 (нуль) или 1 (положительный).
fromInteger :: Integer -> a Source
Преобразование из Integer. Целочисленный литерал представляет собой применение функции fromInteger к соответствующему значению типа Integer, поэтому такие литералы имеют тип (Num a) => a.
Экземпляры
| Num Double |
Обратите внимание, что из-за наличия >>> 0/0 + (negate 0/0 :: Double) NaN Также обратите внимание, что из-за наличия -0, реализация >>> 0 + (-0 :: Double) 0.0 С версии: base-2.1 |
Определено в GHC.Float | |
| Num Float |
Обратите внимание, что из-за наличия >>> 0/0 + (negate 0/0 :: Float) NaN Также обратите внимание, что из-за наличия -0, реализация >>> 0 + (-0 :: Float) 0.0 С версии: base-2.1 |
| Num Int | С версии: base-2.1 |
| Num Int8 | С версии: base-2.1 |
| Num Int16 | С версии: base-2.1 |
| Num Int32 | С версии: base-2.1 |
| Num Int64 | С версии: base-2.1 |
| Num Integer | С версии: base-2.1 |
Определено в GHC.Num | |
| Num Natural |
Обратите внимание, что экземпляр С версии: base-4.8.0.0 |
| Num CClock | |
Определено в Foreign.C.Types | |
| Num CSigAtomic | |
Определено в Foreign.C.Types Методы(+) :: CSigAtomic -> CSigAtomic -> CSigAtomic Источник (-) :: CSigAtomic -> CSigAtomic -> CSigAtomic Источник (*) :: CSigAtomic -> CSigAtomic -> CSigAtomic Источник negate :: CSigAtomic -> CSigAtomic Источник abs :: CSigAtomic -> CSigAtomic Источник signum :: CSigAtomic -> CSigAtomic Источник fromInteger :: Integer -> CSigAtomic Источник | |
| Num CWchar | |
Определено в Foreign.C.Types | |
| Num CSize | |
| Num CPtrdiff | |
Определено в Foreign.C.Types Методы(+) :: CPtrdiff -> CPtrdiff -> CPtrdiff Source (-) :: CPtrdiff -> CPtrdiff -> CPtrdiff Source (*) :: CPtrdiff -> CPtrdiff -> CPtrdiff Source negate :: CPtrdiff -> CPtrdiff Source abs :: CPtrdiff -> CPtrdiff Source signum :: CPtrdiff -> CPtrdiff Source fromInteger :: Integer -> CPtrdiff Source | |
| Num CDouble | |
Определено в Foreign.C.Types | |
| Num CFloat | |
Определено в Foreign.C.Types | |
| Num CBool | |
| Num CULLong | |
Определено в Foreign.C.Types Краткое описание методов(+) :: CULLong -> CULLong -> CULLong Source (-) :: CULLong -> CULLong -> CULLong Source (*) :: CULLong -> CULLong -> CULLong Source negate :: CULLong -> CULLong Source abs :: CULLong -> CULLong Source signum :: CULLong -> CULLong Source fromInteger :: Integer -> CULLong Source | |
| Num CLLong | |
Определено в Foreign.C.Types | |
| Num CUShort | |
Определено в Foreign.C.Types | |
| Num CShort | |
Определено в Foreign.C.Types | |
| Num CUChar | |
Определено в Foreign.C.Types | |
| Num CSChar | |
Определено в Foreign.C.Types | |
| Num CChar | |
| Num Fd | |
| Num CNfds | |
Определено в System.Posix.Types | |
| Num CSocklen | |
Определено в System.Posix.Types Методы(+) :: CSocklen -> CSocklen -> CSocklen Источник (-) :: CSocklen -> CSocklen -> CSocklen Источник (*) :: CSocklen -> CSocklen -> CSocklen Источник negate :: CSocklen -> CSocklen Источник abs :: CSocklen -> CSocklen Источник signum :: CSocklen -> CSocklen Источник fromInteger :: Integer -> CSocklen Источник | |
| Num CKey | |
| Num CId | |
| Num CFsFilCnt | |
Определено в System.Posix.Types Краткое описание методов(+) :: CBlkCnt -> CBlkCnt -> CBlkCnt Source (-) :: CBlkCnt -> CBlkCnt -> CBlkCnt Source (*) :: CBlkCnt -> CBlkCnt -> CBlkCnt Source negate :: CBlkCnt -> CBlkCnt Source abs :: CBlkCnt -> CBlkCnt Source signum :: CBlkCnt -> CBlkCnt Source fromInteger :: Integer -> CBlkCnt Source | |
| Num CBlkSize | |
Определено в System.Posix.Types Краткое описание методов(+) :: CBlkSize -> CBlkSize -> CBlkSize Source (-) :: CBlkSize -> CBlkSize -> CBlkSize Source (*) :: CBlkSize -> CBlkSize -> CBlkSize Source negate :: CBlkSize -> CBlkSize Source abs :: CBlkSize -> CBlkSize Source signum :: CBlkSize -> CBlkSize Source fromInteger :: Integer -> CBlkSize Source | |
| Num CRLim | |
Определено в System.Posix.Types | |
| Num CTcflag | |
Определено в System.Posix.Types Краткое описание методов(+) :: CTcflag -> CTcflag -> CTcflag Source (-) :: CTcflag -> CTcflag -> CTcflag Source (*) :: CTcflag -> CTcflag -> CTcflag Source negate :: CTcflag -> CTcflag Source abs :: CTcflag -> CTcflag Source signum :: CTcflag -> CTcflag Source fromInteger :: Integer -> CTcflag Source | |
| Num CSpeed | |
Определено в System.Posix.Types | |
| Num CCc | |
| Num CUid | |
Определено в System.Posix.Types Краткое описание методов(+) :: CSsize -> CSsize -> CSsize Источник (-) :: CSsize -> CSsize -> CSsize Источник (*) :: CSsize -> CSsize -> CSsize Источник negate :: CSsize -> CSsize Источник abs :: CSsize -> CSsize Источник signum :: CSsize -> CSsize Источник fromInteger :: Integer -> CSsize Источник | |
| Num CPid | |
Определено в System.Posix.Types | |
| Num COff | |
Определено в System.Posix.Types | |
| Num CMode | |
Определено в System.Posix.Types | |
| Num CIno | |
| Num CDev | |
| Integral a => Num (Ratio a) | С версии: base-2.0.1 |
Определено в GHC.Real Краткое описание методов(+) :: Ratio a -> Ratio a -> Ratio a Source (-) :: Ratio a -> Ratio a -> Ratio a Source (*) :: Ratio a -> Ratio a -> Ratio a Source negate :: Ratio a -> Ratio a Source abs :: Ratio a -> Ratio a Source signum :: Ratio a -> Ratio a Source fromInteger :: Integer -> Ratio a Source | |
| Num a => Num (Down a) | Since: base-4.11.0.0 |
| Num a => Num (Product a) | Since: base-4.7.0.0 |
Определено в Data.Semigroup.Internal Методы(+) :: Product a -> Product a -> Product a Source (-) :: Product a -> Product a -> Product a Source (*) :: Product a -> Product a -> Product a Source negate :: Product a -> Product a Source abs :: Product a -> Product a Source signum :: Product a -> Product a Source fromInteger :: Integer -> Product a Source | |
| Num a => Num (Sum a) | Since: base-4.7.0.0 |
| Num a => Num (Identity a) | Since: base-4.9.0.0 |
Определено в Data.Functor.Identity Методы(+) :: Identity a -> Identity a -> Identity a Source (-) :: Identity a -> Identity a -> Identity a Source (*) :: Identity a -> Identity a -> Identity a Source negate :: Identity a -> Identity a Source abs :: Identity a -> Identity a Source signum :: Identity a -> Identity a Source fromInteger :: Integer -> Identity a Source | |
| Num a => Num (Max a) | С версии: base-4.9.0.0 |
| Num a => Num (Min a) | С версии: base-4.9.0.0 |
| RealFloat a => Num (Complex a) | С версии: base-2.1 |
Определено в Data.Complex Краткое описание методов(+) :: Complex a -> Complex a -> Complex a Source (-) :: Complex a -> Complex a -> Complex a Source (*) :: Complex a -> Complex a -> Complex a Source negate :: Complex a -> Complex a Source abs :: Complex a -> Complex a Source signum :: Complex a -> Complex a Source fromInteger :: Integer -> Complex a Source | |
| Num a => Num (Op a b) | |
Определено в Data.Functor.Contravariant | |
| HasResolution a => Num (Fixed a) | С версии: base-2.1 |
Определено в Data.Fixed Краткое описание методов(+) :: Fixed a -> Fixed a -> Fixed a Source (-) :: Fixed a -> Fixed a -> Fixed a Source (*) :: Fixed a -> Fixed a -> Fixed a Source negate :: Fixed a -> Fixed a Source abs :: Fixed a -> Fixed a Source signum :: Fixed a -> Fixed a Source fromInteger :: Integer -> Fixed a Source | |
| Num (f a) => Num (Alt f a) | С версии: base-4.8.0.0 |
Определено в Data.Semigroup.Internal | |
| (Applicative f, Num a) => Num (Ap f a) | С версии: base-4.12.0.0 |
| Num a => Num (Const a b) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Const Методы(+) :: Const a b -> Const a b -> Const a b Source (-) :: Const a b -> Const a b -> Const a b Source (*) :: Const a b -> Const a b -> Const a b Source negate :: Const a b -> Const a b Source abs :: Const a b -> Const a b Source signum :: Const a b -> Const a b Source fromInteger :: Integer -> Const a b Source | |
class (Num a, Ord a) => Real a where Source
Методы
toRational :: a -> Rational Source
рациональный эквивалент его вещественного аргумента с полной точностью
Экземпляры
| Real Double | С версии: base-2.1 |
Определено в GHC.Float МетодыtoRational :: Double -> Rational Источник | |
| Real Float | С версии: base-2.1 |
Определено в GHC.Float МетодыtoRational :: Float -> Rational Источник | |
| Real Int | С версии: base-2.0.1 |
Определено в GHC.Real МетодыtoRational :: Int -> Rational Источник | |
| Real Int8 | С версии: base-2.1 |
Определено в GHC.Int МетодыtoRational :: Int8 -> Rational Источник | |
| Real Int16 | С версии: base-2.1 |
Определено в GHC.Int МетодыtoRational :: Int16 -> Rational Источник | |
| Real Int32 | С версии: base-2.1 |
Определено в GHC.Int МетодыtoRational :: Int32 -> Rational Источник | |
| Real Int64 | С версии: base-2.1 |
Определено в GHC.Int МетодыtoRational :: Int64 -> Rational Источник | |
| Real Integer | С версии: base-2.0.1 |
Определено в GHC.Real МетодыtoRational :: Integer -> Rational Источник | |
| Real Natural | С версии: base-4.8.0.0 |
Определено в GHC.Real МетодыtoRational :: Natural -> Rational Источник | |
| Real Word | С версии: base-2.1 |
Определено в GHC.Real МетодыtoRational :: Word -> Rational Источник | |
| Real Word8 | С версии: base-2.1 |
Определено в GHC.Word МетодыtoRational :: Word8 -> Rational Источник | |
| Real Word16 | С версии: base-2.1 |
Определено в GHC.Word МетодыtoRational :: Word16 -> Rational Источник | |
| Real Word32 | С версии: base-2.1 |
Определено в GHC.Word МетодыtoRational :: Word32 -> Rational Источник | |
| Real Word64 | С версии: base-2.1 |
Определено в GHC.Word МетодыtoRational :: Word64 -> Rational Источник | |
| Real IntPtr | |
class (Real a, Enum a) => Integral a where Источник
Целые числа, поддерживающие целочисленное деление.
В отчёте по Haskell не определены законы для Integral. Однако, от экземпляров Integral обычно ожидается определение евклидова кольца и наличие следующих свойств для пар div/mod и quot/rem, при условии наличия подходящих евклидовых функций f и g:
-
x=y * quot x y + rem x ywithrem x y=fromInteger 0org (rem x y)<g y -
x=y * div x y + mod x ywithmod x y=fromInteger 0orf (mod x y)<f y
Пример подходящей евклидовой функции, для экземпляра Integer, это abs.
Методы
quot :: a -> a -> a infixl 7 Source
целочисленное деление, усеченное к нулю
rem :: a -> a -> a infixl 7 Source
остаток от целочисленного деления, удовлетворяющий
(x `quot` y)*y + (x `rem` y) == x
div :: a -> a -> a infixl 7 Source
целочисленное деление, усеченное к отрицательной бесконечности
mod :: a -> a -> a infixl 7 Source
целочисленный модуль, удовлетворяющий
(x `div` y)*y + (x `mod` y) == x
quotRem :: a -> a -> (a, a) Source
divMod :: a -> a -> (a, a) Source
toInteger :: a -> Integer Source
преобразование в Integer
Экземпляры
| Integral Int | Since: base-2.0.1 |
| Integral Int8 | Since: base-2.1 |
Определено в GHC.Int | |
| Integral Int16 | Since: base-2.1 |
| Integral Int32 | Since: base-2.1 |
Определено в GHC.Int | |
| Integral Int64 | С версии: base-2.1 |
Определено в GHC.Int | |
| Integral Integer | С версии: base-2.0.1 |
Определено в GHC.Real Краткое описание методовquot :: Integer -> Integer -> Integer Источник rem :: Integer -> Integer -> Integer Источник div :: Integer -> Integer -> Integer Источник mod :: Integer -> Integer -> Integer Источник quotRem :: Integer -> Integer -> (Integer, Integer) Источник | |
| Integral Natural | С версии: base-4.8.0.0 |
Определено в GHC.Real Краткое описание методовquot :: Natural -> Natural -> Natural Source rem :: Natural -> Natural -> Natural Source div :: Natural -> Natural -> Natural Source mod :: Natural -> Natural -> Natural Source quotRem :: Natural -> Natural -> (Natural, Natural) Source | |
| Integral Word | Since: base-2.1 |
Определено в GHC.Real | |
| Integral Word8 | Since: base-2.1 |
Определено в GHC.Word | |
| Integral Word16 | Since: base-2.1 |
Определено в GHC.Word | |
| Integral Word32 | Since: base-2.1 |
Определено в GHC.Word | |
| Integral Word64 | Since: base-2.1 |
Определено в GHC.Word | |
| Integral IntPtr | |
Определено в Foreign.Ptr | |
| Integral WordPtr | |
Определено в Foreign.Ptr Краткое описание методовquot :: WordPtr -> WordPtr -> WordPtr Source rem :: WordPtr -> WordPtr -> WordPtr Source div :: WordPtr -> WordPtr -> WordPtr Source mod :: WordPtr -> WordPtr -> WordPtr Source quotRem :: WordPtr -> WordPtr -> (WordPtr, WordPtr) Source | |
| Integral CUIntMax | |
Определено в Foreign.C.Types Краткое описание методовquot :: CUIntMax -> CUIntMax -> CUIntMax Source rem :: CUIntMax -> CUIntMax -> CUIntMax Source div :: CUIntMax -> CUIntMax -> CUIntMax Source mod :: CUIntMax -> CUIntMax -> CUIntMax Source quotRem :: CUIntMax -> CUIntMax -> (CUIntMax, CUIntMax) Source divMod :: CUIntMax -> CUIntMax -> (CUIntMax, CUIntMax) Source | |
| Integral CIntMax | |
Определено в Foreign.C.Types Методыquot :: CSigAtomic -> CSigAtomic -> CSigAtomic Источник rem :: CSigAtomic -> CSigAtomic -> CSigAtomic Источник div :: CSigAtomic -> CSigAtomic -> CSigAtomic Источник mod :: CSigAtomic -> CSigAtomic -> CSigAtomic Источник quotRem :: CSigAtomic -> CSigAtomic -> (CSigAtomic, CSigAtomic) Источник divMod :: CSigAtomic -> CSigAtomic -> (CSigAtomic, CSigAtomic) Источник toInteger :: CSigAtomic -> Integer Источник | |
| Integral CWchar | |
Определено в Foreign.C.Types | |
| Integral CSize | |
Определено в Foreign.C.Types | |
| Integral CPtrdiff | |
Определено в Foreign.C.Types Методыquot :: CPtrdiff -> CPtrdiff -> CPtrdiff Источник rem :: CPtrdiff -> CPtrdiff -> CPtrdiff Источник div :: CPtrdiff -> CPtrdiff -> CPtrdiff Источник mod :: CPtrdiff -> CPtrdiff -> CPtrdiff Источник quotRem :: CPtrdiff -> CPtrdiff -> (CPtrdiff, CPtrdiff) Источник divMod :: CPtrdiff -> CPtrdiff -> (CPtrdiff, CPtrdiff) Источник | |
| Integral CBool | |
Определено в Foreign.C.Types | |
| Integral CULLong | |
Определено в Foreign.C.Types Методыquot :: CULLong -> CULLong -> CULLong Источник rem :: CULLong -> CULLong -> CULLong Источник div :: CULLong -> CULLong -> CULLong Источник mod :: CULLong -> CULLong -> CULLong Источник quotRem :: CULLong -> CULLong -> (CULLong, CULLong) Источник | |
| Integral CLLong | |
Определено в Foreign.C.Types Краткое описание методовquot :: CLLong -> CLLong -> CLLong Источник rem :: CLLong -> CLLong -> CLLong Источник div :: CLLong -> CLLong -> CLLong Источник mod :: CLLong -> CLLong -> CLLong Источник quotRem :: CLLong -> CLLong -> (CLLong, CLLong) Источник | |
| Integral CULong | |
Определено в Foreign.C.Types Краткое описание методовquot :: CULong -> CULong -> CULong Источник rem :: CULong -> CULong -> CULong Источник div :: CULong -> CULong -> CULong Источник mod :: CULong -> CULong -> CULong Источник quotRem :: CULong -> CULong -> (CULong, CULong) Источник | |
| Integral CLong | |
Определено в Foreign.C.Types | |
| Integral CUInt | |
Определено в Foreign.C.Types Методыquot :: CChar -> CChar -> CChar Исходный код rem :: CChar -> CChar -> CChar Исходный код div :: CChar -> CChar -> CChar Исходный код mod :: CChar -> CChar -> CChar Исходный код quotRem :: CChar -> CChar -> (CChar, CChar) Исходный код divMod :: CChar -> CChar -> (CChar, CChar) Исходный код toInteger :: CChar -> Integer Исходный код | |
| Integral Fd | |
Определено в System.Posix.Types | |
| Integral CNfds | |
Определено в System.Posix.Types Методыquot :: CNfds -> CNfds -> CNfds Исходный код rem :: CNfds -> CNfds -> CNfds Исходный код div :: CNfds -> CNfds -> CNfds Исходный код mod :: CNfds -> CNfds -> CNfds Исходный код quotRem :: CNfds -> CNfds -> (CNfds, CNfds) Исходный код divMod :: CNfds -> CNfds -> (CNfds, CNfds) Исходный код toInteger :: CNfds -> Integer Исходный код | |
| Integral CSocklen | |
Определено в System.Posix.Types Краткое описание методовquot :: CSocklen -> CSocklen -> CSocklen Source rem :: CSocklen -> CSocklen -> CSocklen Source div :: CSocklen -> CSocklen -> CSocklen Source mod :: CSocklen -> CSocklen -> CSocklen Source quotRem :: CSocklen -> CSocklen -> (CSocklen, CSocklen) Source divMod :: CSocklen -> CSocklen -> (CSocklen, CSocklen) Source | |
| Integral CKey | |
Определено в System.Posix.Types | |
| Integral CId | |
Определено в System.Posix.Types | |
| Integral CFsFilCnt | |
Определено в System.Posix.Types Краткое описание методовquot :: CBlkCnt -> CBlkCnt -> CBlkCnt Источник rem :: CBlkCnt -> CBlkCnt -> CBlkCnt Источник div :: CBlkCnt -> CBlkCnt -> CBlkCnt Источник mod :: CBlkCnt -> CBlkCnt -> CBlkCnt Источник quotRem :: CBlkCnt -> CBlkCnt -> (CBlkCnt, CBlkCnt) Источник | |
| Integral CBlkSize | |
Определено в System.Posix.Types Краткое описание методовquot :: CBlkSize -> CBlkSize -> CBlkSize Источник rem :: CBlkSize -> CBlkSize -> CBlkSize Источник div :: CBlkSize -> CBlkSize -> CBlkSize Источник mod :: CBlkSize -> CBlkSize -> CBlkSize Источник quotRem :: CBlkSize -> CBlkSize -> (CBlkSize, CBlkSize) Источник divMod :: CBlkSize -> CBlkSize -> (CBlkSize, CBlkSize) Источник | |
| Integral CRLim | |
Определено в System.Posix.Types | |
| Integral CTcflag | |
Определено в System.Posix.Types | |
| Integral CSsize | |
Определено в System.Posix.Types | |
| Integral CPid | |
Определено в System.Posix.Types | |
| Integral COff | |
Определено в System.Posix.Types | |
| Integral CMode | |
Определено в System.Posix.Types | |
| Integral CIno | |
Определено в System.Posix.Types | |
| Integral CDev | |
Определено в Data.Functor.Const Краткое описание методовquot :: Const a b -> Const a b -> Const a b Исходный код rem :: Const a b -> Const a b -> Const a b Исходный код div :: Const a b -> Const a b -> Const a b Исходный код mod :: Const a b -> Const a b -> Const a b Исходный код quotRem :: Const a b -> Const a b -> (Const a b, Const a b) Исходный код divMod :: Const a b -> Const a b -> (Const a b, Const a b) Исходный код toInteger :: Const a b -> Integer Исходный код |
class Num a => Fractional a where Исходный код
Дробные числа, поддерживающие деление с остатком.
В отчёте по Haskell не определены законы для Fractional. Однако, (+) и (*) обычно ожидается, что они определяют тело деления и обладают следующими свойствами:
recipдаёт мультипликативный обратный элемент-
x * recip x=recip x * x=fromInteger 1
Обратите внимание, что не обычно ожидается, что экземпляр типа Fractional реализует поле. Однако, все экземпляры в base делают это.
Минимальное полное определение
fromRational, (recip | (/))
Краткое описание методов
(/) :: a -> a -> a infixl 7 Исходный код
Деление с плавающей точкой.
recip :: a -> a Исходный код
Обратная дробь.
fromRational :: Rational -> a Исходный код
Преобразование из Rational (то есть Ratio Integer). Плавающий литерал представляет собой применение fromRational к значению типа Rational, поэтому такие литералы имеют тип (Fractional a) => a.
Экземпляры
| Fractional Double |
Обратите внимание, что из-за наличия >>> 0/0 * (recip 0/0 :: Double) NaN Since: base-2.1 |
| Fractional Float |
Обратите внимание, что из-за наличия >>> 0/0 * (recip 0/0 :: Float) NaN Since: base-2.1 |
| Fractional CDouble | |
| Fractional CFloat | |
| Integral a => Fractional (Ratio a) | Since: base-2.0.1 |
| Fractional a => Fractional (Down a) | Since: base-4.14.0.0 |
| Fractional a => Fractional (Identity a) | Since: base-4.9.0.0 |
| RealFloat a => Fractional (Complex a) | Since: base-2.1 |
| Fractional a => Fractional (Op a b) | |
| HasResolution a => Fractional (Fixed a) | Since: base-2.1 |
| Fractional a => Fractional (Const a b) | Since: base-4.9.0.0 |
class Fractional a => Floating a where Source
Тригонометрические и гиперболические функции и связанные функции.
В отчете Haskell не определены законы для Floating. Однако, (+), (*) и exp обычно ожидается, что они определяют экспоненциальное поле и обладают следующими свойствами:
-
exp (a + b)=exp a * exp b -
exp (fromInteger 0)=fromInteger 1
Минимальное полное определение
pi, exp, log, sin, cos, asin, acos, atan, sinh, cosh, asinh, acosh, atanh
Экземпляры
| Floating Double | С версии: base-2.1 |
Определено в GHC.Float Методыexp :: Double -> Double Source log :: Double -> Double Source sqrt :: Double -> Double Source (**) :: Double -> Double -> Double Source logBase :: Double -> Double -> Double Source sin :: Double -> Double Source cos :: Double -> Double Source tan :: Double -> Double Source asin :: Double -> Double Source acos :: Double -> Double Source atan :: Double -> Double Source sinh :: Double -> Double Source cosh :: Double -> Double Source tanh :: Double -> Double Source asinh :: Double -> Double Source acosh :: Double -> Double Source atanh :: Double -> Double Source log1p :: Double -> Double Source expm1 :: Double -> Double Source | |
| Floating Float | С версии: base-2.1 |
| Floating CDouble | |
Определено в Foreign.C.Types Краткое описание методовexp :: CDouble -> CDouble Source log :: CDouble -> CDouble Source sqrt :: CDouble -> CDouble Source (**) :: CDouble -> CDouble -> CDouble Source logBase :: CDouble -> CDouble -> CDouble Source sin :: CDouble -> CDouble Source cos :: CDouble -> CDouble Source tan :: CDouble -> CDouble Source asin :: CDouble -> CDouble Source acos :: CDouble -> CDouble Source atan :: CDouble -> CDouble Source sinh :: CDouble -> CDouble Source cosh :: CDouble -> CDouble Source tanh :: CDouble -> CDouble Source asinh :: CDouble -> CDouble Source acosh :: CDouble -> CDouble Source atanh :: CDouble -> CDouble Source log1p :: CDouble -> CDouble Source expm1 :: CDouble -> CDouble Source | |
| Floating CFloat | |
Определено в Foreign.C.Types Краткое описание методовexp :: CFloat -> CFloat Source log :: CFloat -> CFloat Source sqrt :: CFloat -> CFloat Source (**) :: CFloat -> CFloat -> CFloat Source logBase :: CFloat -> CFloat -> CFloat Source sin :: CFloat -> CFloat Source cos :: CFloat -> CFloat Source tan :: CFloat -> CFloat Source asin :: CFloat -> CFloat Source acos :: CFloat -> CFloat Source atan :: CFloat -> CFloat Source sinh :: CFloat -> CFloat Source cosh :: CFloat -> CFloat Source tanh :: CFloat -> CFloat Source asinh :: CFloat -> CFloat Source acosh :: CFloat -> CFloat Source atanh :: CFloat -> CFloat Source log1p :: CFloat -> CFloat Source expm1 :: CFloat -> CFloat Source | |
| Floating a => Floating (Down a) | С версии: base-4.14.0.0 |
Определено в Data.Ord Краткое описание методовexp :: Down a -> Down a Source log :: Down a -> Down a Source sqrt :: Down a -> Down a Source (**) :: Down a -> Down a -> Down a Source logBase :: Down a -> Down a -> Down a Source sin :: Down a -> Down a Source cos :: Down a -> Down a Source tan :: Down a -> Down a Source asin :: Down a -> Down a Source acos :: Down a -> Down a Source atan :: Down a -> Down a Source sinh :: Down a -> Down a Source cosh :: Down a -> Down a Source tanh :: Down a -> Down a Source asinh :: Down a -> Down a Source acosh :: Down a -> Down a Source atanh :: Down a -> Down a Source log1p :: Down a -> Down a Source expm1 :: Down a -> Down a Source | |
| Floating a => Floating (Identity a) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Identity Краткое описание методовexp :: Identity a -> Identity a Source log :: Identity a -> Identity a Source sqrt :: Identity a -> Identity a Source (**) :: Identity a -> Identity a -> Identity a Source logBase :: Identity a -> Identity a -> Identity a Source sin :: Identity a -> Identity a Source cos :: Identity a -> Identity a Source tan :: Identity a -> Identity a Source asin :: Identity a -> Identity a Source acos :: Identity a -> Identity a Source atan :: Identity a -> Identity a Source sinh :: Identity a -> Identity a Source cosh :: Identity a -> Identity a Source tanh :: Identity a -> Identity a Source asinh :: Identity a -> Identity a Source acosh :: Identity a -> Identity a Source atanh :: Identity a -> Identity a Source log1p :: Identity a -> Identity a Source expm1 :: Identity a -> Identity a Source | |
| RealFloat a => Floating (Complex a) | С версии: base-2.1 |
Определено в Data.Complex Краткое описание методовexp :: Complex a -> Complex a Source log :: Complex a -> Complex a Source sqrt :: Complex a -> Complex a Source (**) :: Complex a -> Complex a -> Complex a Source logBase :: Complex a -> Complex a -> Complex a Source sin :: Complex a -> Complex a Source cos :: Complex a -> Complex a Source tan :: Complex a -> Complex a Source asin :: Complex a -> Complex a Source acos :: Complex a -> Complex a Source atan :: Complex a -> Complex a Source sinh :: Complex a -> Complex a Source cosh :: Complex a -> Complex a Source tanh :: Complex a -> Complex a Source asinh :: Complex a -> Complex a Source acosh :: Complex a -> Complex a Source atanh :: Complex a -> Complex a Source log1p :: Complex a -> Complex a Source expm1 :: Complex a -> Complex a Source | |
| Floating a => Floating (Op a b) | |
Определено в Data.Functor.Contravariant Краткое описание методовexp :: Op a b -> Op a b Source log :: Op a b -> Op a b Source sqrt :: Op a b -> Op a b Source (**) :: Op a b -> Op a b -> Op a b Source logBase :: Op a b -> Op a b -> Op a b Source sin :: Op a b -> Op a b Source cos :: Op a b -> Op a b Source tan :: Op a b -> Op a b Source asin :: Op a b -> Op a b Source acos :: Op a b -> Op a b Source atan :: Op a b -> Op a b Source sinh :: Op a b -> Op a b Source cosh :: Op a b -> Op a b Source tanh :: Op a b -> Op a b Source asinh :: Op a b -> Op a b Source acosh :: Op a b -> Op a b Source atanh :: Op a b -> Op a b Source log1p :: Op a b -> Op a b Source expm1 :: Op a b -> Op a b Source | |
| Floating a => Floating (Const a b) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Const Краткое описание методовexp :: Const a b -> Const a b Source log :: Const a b -> Const a b Source sqrt :: Const a b -> Const a b Source (**) :: Const a b -> Const a b -> Const a b Source logBase :: Const a b -> Const a b -> Const a b Source sin :: Const a b -> Const a b Source cos :: Const a b -> Const a b Source tan :: Const a b -> Const a b Source asin :: Const a b -> Const a b Source acos :: Const a b -> Const a b Source atan :: Const a b -> Const a b Source sinh :: Const a b -> Const a b Source cosh :: Const a b -> Const a b Source tanh :: Const a b -> Const a b Source asinh :: Const a b -> Const a b Source acosh :: Const a b -> Const a b Source atanh :: Const a b -> Const a b Source log1p :: Const a b -> Const a b Source expm1 :: Const a b -> Const a b Source |
class (Real a, Fractional a) => RealFrac a where Source
Извлечение компонентов дробей.
Минимальное полное определение
Краткое описание методов
properFraction :: Integral b => a -> (b, a) Source
Функция properFraction принимает вещественное дробное число x и возвращает пару (n,f) такую, что x = n+f, и:
-
nявляется целым числом с тем же знаком, что иx; и -
fявляется дробью с тем же типом и знаком, что иx, и с абсолютным значением меньше, чем1.
Определения по умолчанию для функций ceiling, floor, truncate и round даны через properFraction.
truncate :: Integral b => a -> b Source
truncate x возвращает ближайшее целое число x между нулём и x
round :: Integral b => a -> b Source
round x возвращает ближайшее целое число к x; чётное число, если x находится на одинаковом расстоянии от двух целых чисел
ceiling :: Integral b => a -> b Source
ceiling x возвращает наименьшее целое число, не меньшее x
floor :: Integral b => a -> b Source
floor x возвращает наибольшее целое число, не большее x
Экземпляры
| RealFrac a => RealFrac (Identity a) | Since: base-4.9.0.0 |
Определено в Data.Functor.Identity | |
| HasResolution a => RealFrac (Fixed a) | Since: base-2.1 |
| RealFrac a => RealFrac (Const a b) | Since: base-4.9.0.0 |
Определено в Data.Functor.Const | |
class (RealFrac a, Floating a) => RealFloat a where Source
Эффективный, не зависящий от машины доступ к компонентам числа с плавающей точкой.
Минимальное полное определение
floatRadix, floatDigits, floatRange, decodeFloat, encodeFloat, isNaN, isInfinite, isDenormalized, isNegativeZero, isIEEE
Краткое описание методов
floatRadix :: a -> Integer Source
константная функция, возвращающая основание системы счисления представления (часто 2)
floatDigits :: a -> Int Source
константная функция, возвращающая количество цифр floatRadix в мантиссе
floatRange :: a -> (Int, Int) Source
константная функция, возвращающая наименьшие и наибольшие значения, которые может принимать показатель степени
decodeFloat :: a -> (Integer, Int) Source
Функция decodeFloat, применённая к действительному числу с плавающей точкой, возвращает мантиссу, выраженную как Integer и соответствующий масштабированный показатель степени (Int). Если decodeFloat x даёт (m,n), то x равно по значению m*b^^n, где b — основание системы счисления с плавающей точкой, и, кроме того, либо m и n оба равны нулю, либо b^(d-1) <= abs m < b^d, где d — значение floatDigits x. В частности, decodeFloat 0 = (0,0). Если тип содержит отрицательный ноль, то также decodeFloat (-0.0) = (0,0). Результат decodeFloat x не определён, если либо isNaN x либо isInfinite x равно True.
encodeFloat :: Integer -> Int -> a Source
encodeFloat выполняет обратное преобразование decodeFloat в том смысле, что для конечных x за исключением -0.0, uncurry encodeFloat (decodeFloat x) = x. encodeFloat m n — одно из двух ближайших представимых чисел с плавающей точкой к m*b^^n (или ±Infinity, если происходит переполнение); обычно ближайшее, но если m содержит слишком много битов, результат может быть округлен в неправильном направлении.
exponent соответствует второй компоненте decodeFloat. exponent 0 = 0 и для конечных ненулевых x, exponent x = snd (decodeFloat x) + floatDigits x. Если x — конечное число с плавающей точкой, оно равно по значению significand x * b ^^ exponent x, где b — основание системы счисления с плавающей точкой. Поведение не определено для бесконечных или NaN значений.
significand :: a -> a Source
Первая компонента decodeFloat, масштабированная так, чтобы лежать в открытом интервале (-1,1), либо 0.0, либо абсолютное значение >= 1/b, где b — основание системы счисления с плавающей точкой. Поведение не определено для бесконечных или NaN значений.
scaleFloat :: Int -> a -> a Source
умножает число с плавающей точкой на целую степень основания
True, если аргумент является значением IEEE "не число" (NaN)
isInfinite :: a -> Bool Source
True, если аргумент является бесконечностью IEEE или отрицательной бесконечностью
isDenormalized :: a -> Bool Source
True, если аргумент слишком мал, чтобы быть представленным в нормализованном формате
isNegativeZero :: a -> Bool Source
True, если аргумент является отрицательным нулём IEEE
True, если аргумент является числом с плавающей точкой IEEE
Вариант арктангенса, принимающий два действительных аргумента с плавающей точкой. Для действительных чисел с плавающей точкой x и y, atan2 y x вычисляет угол (от положительной оси x) вектора от начала координат до точки (x,y). atan2 y x возвращает значение в диапазоне [-pi, pi]. Он следует семантике Common Lisp для начала координат, когда поддерживаются знакомые нули. atan2 y 1, с y в типе, который является RealFloat, должен возвращать то же значение, что и atan y. Предоставляется определение по умолчанию для atan2, но разработчики могут предоставить более точную реализацию.
Экземпляры
Определено в Data.Functor.Const МетодыfloatRadix :: Const a b -> Integer Source floatDigits :: Const a b -> Int Source floatRange :: Const a b -> (Int, Int) Source decodeFloat :: Const a b -> (Integer, Int) Source encodeFloat :: Integer -> Int -> Const a b Source exponent :: Const a b -> Int Source significand :: Const a b -> Const a b Source scaleFloat :: Int -> Const a b -> Const a b Source isNaN :: Const a b -> Bool Source isInfinite :: Const a b -> Bool Source isDenormalized :: Const a b -> Bool Source isNegativeZero :: Const a b -> Bool Source |
Числовые функции
subtract :: Num a => a -> a -> a Source
Поскольку - обрабатывается специальным образом в грамматике Haskell, (- e) не является секцией, а применением префиксного отрицания. Однако, (subtract exp) эквивалентно недопустимой секции.
even :: Integral a => a -> Bool Source
odd :: Integral a => a -> Bool Source
gcd :: Integral a => a -> a -> a Source
gcd x y — это неотрицательный множитель как x, так и y, каждый общий множитель которых x и y также является множителем; например, gcd 4 2 = 2, gcd (-4) 6 = 2, gcd 0 4 = 4. gcd 0 0 = 0. (То есть, общий делитель, который является "наибольшим" в частичном порядке делимости.)
Примечание: поскольку для типов целых чисел со знаком и фиксированной шириной, abs minBound < 0, результат может быть отрицательным, если один из аргументов является minBound (и обязательно будет, если другой является 0 или minBound) для таких типов.
lcm :: Integral a => a -> a -> a Source
lcm x y — это наименьшее положительное целое число, на которое делятся как x, так и y.
(^) :: (Num a, Integral b) => a -> b -> a infixr 8 Source
возведение числа в неотрицательную целую степень
(^^) :: (Fractional a, Integral b) => a -> b -> a infixr 8 Source
возведение числа в целую степень
fromIntegral :: (Integral a, Num b) => a -> b Source
общее приведение типов из целых типов
realToFrac :: (Real a, Fractional b) => a -> b Source
общее приведение типов к дробным типам
Полугруппы и моноиды
class Semigroup a where Source
Класс полугрупп (типы с ассоциативной бинарной операцией).
Экземпляры должны удовлетворять следующим условиям:
Начиная с: base-4.9.0.0
Экземпляры
| Semigroup Ordering | С версии: base-4.9.0.0 |
| Semigroup () | С версии: base-4.9.0.0 |
| Semigroup Any | С версии: base-4.9.0.0 |
| Semigroup All | С версии: base-4.9.0.0 |
| Semigroup Lifetime | С версии: base-4.10.0.0 |
| Semigroup Event | С версии: base-4.10.0.0 |
| Semigroup Void | С версии: base-4.9.0.0 |
| Semigroup [a] | С версии: base-4.9.0.0 |
| Semigroup a => Semigroup (Maybe a) | Since: base-4.9.0.0 |
| Semigroup a => Semigroup (IO a) | Since: base-4.10.0.0 |
| Semigroup p => Semigroup (Par1 p) | Since: base-4.12.0.0 |
| Semigroup (NonEmpty a) | Since: base-4.9.0.0 |
| Semigroup a => Semigroup (Down a) | Since: base-4.11.0.0 |
| Num a => Semigroup (Product a) | Since: base-4.9.0.0 |
| Num a => Semigroup (Sum a) | Since: base-4.9.0.0 |
| Monoid m => Semigroup (WrappedMonoid m) | С версии: base-4.9.0.0 |
Определено в Data.Semigroup Краткое описание методов(<>) :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Источник sconcat :: NonEmpty (WrappedMonoid m) -> WrappedMonoid m Источник stimes :: Integral b => b -> WrappedMonoid m -> WrappedMonoid m Источник | |
| Semigroup (Last a) | С версии: base-4.9.0.0 |
| Semigroup (First a) | С версии: base-4.9.0.0 |
| Ord a => Semigroup (Max a) | С версии: base-4.9.0.0 |
| Ord a => Semigroup (Min a) | С версии: base-4.9.0.0 |
| Semigroup (Equivalence a) | |
Определено в Data.Functor.Contravariant Краткое описание методов(<>) :: Equivalence a -> Equivalence a -> Equivalence a Source sconcat :: NonEmpty (Equivalence a) -> Equivalence a Source stimes :: Integral b => b -> Equivalence a -> Equivalence a Source | |
| Semigroup (Comparison a) | |
Определено в Data.Functor.Contravariant Краткое описание методов(<>) :: Comparison a -> Comparison a -> Comparison a Source sconcat :: NonEmpty (Comparison a) -> Comparison a Source stimes :: Integral b => b -> Comparison a -> Comparison a Source | |
| Semigroup (Predicate a) | |
| Semigroup b => Semigroup (a -> b) | С версии: base-4.9.0.0 |
| Semigroup (Either a b) | С версии: base-4.9.0.0 |
| Semigroup (V1 p) | С версии: base-4.12.0.0 |
| Semigroup (U1 p) | С версии: base-4.12.0.0 |
Определено в GHC.Generics Краткое описание методов(<>) :: U1 p -> U1 p -> U1 p Исходный код sconcat :: NonEmpty (U1 p) -> U1 p Исходный код stimes :: Integral b => b -> U1 p -> U1 p Исходный код | |
| (Semigroup a, Semigroup b) => Semigroup (a, b) | С версии: base-4.9.0.0 |
Определено в GHC.Base Краткое описание методов(<>) :: (a, b) -> (a, b) -> (a, b) Исходный код sconcat :: NonEmpty (a, b) -> (a, b) Исходный код stimes :: Integral b0 => b0 -> (a, b) -> (a, b) Исходный код | |
| Semigroup a => Semigroup (ST s a) | С версии: base-4.11.0.0 |
| Semigroup (Proxy s) | С версии: base-4.9.0.0 |
Определено в Data.Proxy Краткое описание методов(<>) :: Proxy s -> Proxy s -> Proxy s Исходный код sconcat :: NonEmpty (Proxy s) -> Proxy s Исходный код stimes :: Integral b => b -> Proxy s -> Proxy s Исходный код | |
| Semigroup a => Semigroup (Op a b) | |
Определено в Data.Functor.Contravariant Краткое описание методов(<>) :: Op a b -> Op a b -> Op a b Исходный код sconcat :: NonEmpty (Op a b) -> Op a b Исходный код stimes :: Integral b0 => b0 -> Op a b -> Op a b Исходный код | |
| Semigroup (f p) => Semigroup (Rec1 f p) | С версии: base-4.12.0.0 |
Определено в GHC.Generics Краткое описание методов(<>) :: Rec1 f p -> Rec1 f p -> Rec1 f p Исходный код sconcat :: NonEmpty (Rec1 f p) -> Rec1 f p Исходный код stimes :: Integral b => b -> Rec1 f p -> Rec1 f p Исходный код | |
| (Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c) | С версии: base-4.9.0.0 |
Определено в GHC.Base Краткое описание методов(<>) :: (a, b, c) -> (a, b, c) -> (a, b, c) Исходный код sconcat :: NonEmpty (a, b, c) -> (a, b, c) Исходный код stimes :: Integral b0 => b0 -> (a, b, c) -> (a, b, c) Исходный код | |
| Alternative f => Semigroup (Alt f a) | Since: base-4.9.0.0 |
| (Applicative f, Semigroup a) => Semigroup (Ap f a) | Since: base-4.12.0.0 |
| Semigroup a => Semigroup (Const a b) | Since: base-4.9.0.0 |
| Semigroup c => Semigroup (K1 i c p) | Since: base-4.12.0.0 |
| (Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p) | Since: base-4.12.0.0 |
| (Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d) | Since: base-4.9.0.0 |
| Semigroup (f p) => Semigroup (M1 i c f p) | Since: base-4.12.0.0 |
Определено в GHC.Generics Краткое описание методов(<>) :: M1 i c f p -> M1 i c f p -> M1 i c f p Исходный код sconcat :: NonEmpty (M1 i c f p) -> M1 i c f p Исходный код stimes :: Integral b => b -> M1 i c f p -> M1 i c f p Исходный код | |
| Semigroup (f (g p)) => Semigroup ((f :.: g) p) | С версии: base-4.12.0.0 |
Определено в GHC.Generics Краткое описание методов(<>) :: (f :.: g) p -> (f :.: g) p -> (f :.: g) p Исходный код sconcat :: NonEmpty ((f :.: g) p) -> (f :.: g) p Исходный код stimes :: Integral b => b -> (f :.: g) p -> (f :.: g) p Исходный код | |
| (Semigroup a, Semigroup b, Semigroup c, Semigroup d, Semigroup e) => Semigroup (a, b, c, d, e) | С версии: base-4.9.0.0 |
Определено в GHC.Base Краткое описание методов(<>) :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Исходный код sconcat :: NonEmpty (a, b, c, d, e) -> (a, b, c, d, e) Исходный код stimes :: Integral b0 => b0 -> (a, b, c, d, e) -> (a, b, c, d, e) Исходный код | |
class Semigroup a => Monoid a where Исходный код
Класс моноидов (типы с ассоциативной бинарной операцией, имеющей тождество). Примеры должны удовлетворять следующим условиям:
- Правое тождество
x <> mempty = x- Левое тождество
mempty <> x = x- Ассоциативность
-
x <> (y <> z) = (x <> y) <> z(Semigroupзакон) - Конкатенация
mconcat = foldr (<>) mempty
Имена методов относятся к моноиду списков при конкатенации, но существует много других примеров.
Некоторые типы можно рассматривать как моноид более чем одним способом, например, как сложение, так и умножение чисел. В таких случаях мы часто определяем newtype и делаем эти примеры Monoid, например, Sum и Product.
ПРИМЕЧАНИЕ: Semigroup является надклассом Monoid начиная с base-4.11.0.0.
Минимальное полное определение
Краткое описание методов
mempty :: a Исходный код
Тождество mappend
>>> "Hello world" <> mempty "Hello world"
mappend :: a -> a -> a Исходный код
Ассоциативная операция
ПРИМЕЧАНИЕ: Этот метод избыточен и имеет реализацию по умолчанию mappend = (<>) начиная с base-4.11.0.0. Если его реализовать вручную, поскольку mappend является синонимом для (<>), ожидается, что две функции определены одинаково. В будущей версии GHC mappend будет удален из Monoid.
mconcat :: [a] -> a Исходный код
Сворачивает список, используя моноид.
Для большинства типов будет использовано определение по умолчанию для mconcat, но функция включена в определение класса, чтобы можно было предоставить оптимизированную версию для конкретных типов.
>>> mconcat ["Hello", " ", "Haskell", "!"] "Hello Haskell!"
Примеры
| Monoid Ordering | Since: base-2.1 |
| Monoid () | Since: base-2.1 |
| Monoid Any | Since: base-2.1 |
| Monoid All | Since: base-2.1 |
| Monoid Lifetime |
Since: base-4.8.0.0 |
| Monoid Event | Since: base-4.4.0.0 |
| Monoid [a] | Since: base-2.1 |
| Semigroup a => Monoid (Maybe a) |
Поднять полугруппу в Since 4.11.0: ограничение на внутреннее значение Since: base-2.1 |
| Monoid a => Monoid (IO a) | Since: base-4.9.0.0 |
| Monoid p => Monoid (Par1 p) | С момента версии: base-4.12.0.0 |
| Monoid a => Monoid (Down a) | С момента версии: base-4.11.0.0 |
| Num a => Monoid (Product a) | С момента версии: base-2.1 |
| Num a => Monoid (Sum a) | С момента версии: base-2.1 |
| Monoid (Endo a) | С момента версии: base-2.1 |
| Monoid a => Monoid (Dual a) | С момента версии: base-2.1 |
| Monoid (Last a) | С момента версии: base-2.1 |
| Monoid (First a) | Since: base-2.1 |
| Monoid a => Monoid (Identity a) | Since: base-4.9.0.0 |
| Semigroup a => Monoid (Option a) | Since: base-4.9.0.0 |
| Monoid m => Monoid (WrappedMonoid m) | Since: base-4.9.0.0 |
Определено в Data.Semigroup Методыmempty :: WrappedMonoid m Source mappend :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m Source mconcat :: [WrappedMonoid m] -> WrappedMonoid m Source | |
| (Ord a, Bounded a) => Monoid (Max a) | Since: base-4.9.0.0 |
| (Ord a, Bounded a) => Monoid (Min a) | Since: base-4.9.0.0 |
| Monoid (Equivalence a) | |
Определено в Data.Functor.Contravariant Методыmempty :: Equivalence a Source mappend :: Equivalence a -> Equivalence a -> Equivalence a Source mconcat :: [Equivalence a] -> Equivalence a Source | |
| Monoid (Comparison a) | |
Определено в Data.Functor.Contravariant Методыmempty :: Comparison a Source mappend :: Comparison a -> Comparison a -> Comparison a Source mconcat :: [Comparison a] -> Comparison a Source | |
| Monoid (Predicate a) | |
| Monoid b => Monoid (a -> b) | Since: base-2.1 |
| Monoid (U1 p) | Since: base-4.12.0.0 |
| (Monoid a, Monoid b) => Monoid (a, b) | Since: base-2.1 |
| Monoid a => Monoid (ST s a) | Since: base-4.11.0.0 |
| Monoid (Proxy s) | Since: base-4.7.0.0 |
| Monoid a => Monoid (Op a b) | |
| Monoid (f p) => Monoid (Rec1 f p) | Since: base-4.12.0.0 |
| (Monoid a, Monoid b, Monoid c) => Monoid (a, b, c) | Since: base-2.1 |
| Alternative f => Monoid (Alt f a) | Since: base-4.8.0.0 |
| (Applicative f, Monoid a) => Monoid (Ap f a) | Since: base-4.12.0.0 |
| Monoid a => Monoid (Const a b) | Since: base-4.9.0.0 |
| Monoid c => Monoid (K1 i c p) | Since: base-4.12.0.0 |
| (Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p) | Since: base-4.12.0.0 |
| (Monoid a, Monoid b, Monoid c, Monoid d) => Monoid (a, b, c, d) | Since: base-2.1 |
Определено в GHC.Base Методыmempty :: (a, b, c, d) Исходный код mappend :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Исходный код mconcat :: [(a, b, c, d)] -> (a, b, c, d) Исходный код | |
| Monoid (f p) => Monoid (M1 i c f p) | С версии: base-4.12.0.0 |
Определено в GHC.Generics Методыmempty :: M1 i c f p Исходный код mappend :: M1 i c f p -> M1 i c f p -> M1 i c f p Исходный код mconcat :: [M1 i c f p] -> M1 i c f p Исходный код | |
| Monoid (f (g p)) => Monoid ((f :.: g) p) | С версии: base-4.12.0.0 |
Определено в GHC.Generics Методыmempty :: (f :.: g) p Исходный код mappend :: (f :.: g) p -> (f :.: g) p -> (f :.: g) p Исходный код mconcat :: [(f :.: g) p] -> (f :.: g) p Исходный код | |
| (Monoid a, Monoid b, Monoid c, Monoid d, Monoid e) => Monoid (a, b, c, d, e) | С версии: base-2.1 |
Определено в GHC.Base Методыmempty :: (a, b, c, d, e) Исходный код mappend :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Исходный код mconcat :: [(a, b, c, d, e)] -> (a, b, c, d, e) Исходный код | |
Моноиды и функторы
class Functor f where Исходный код
Тип f является функтором, если он предоставляет функцию fmap, которая, учитывая любые типы a и b, позволяет применить любую функцию из (a -> b) для преобразования f a в f b, сохраняя структуру f. Кроме того, f должен соответствовать следующим условиям:
Обратите внимание, что второй закон следует из свободной теоремы типа fmap и первого закона, поэтому вам нужно проверить только выполнение первого условия.
Минимальное полное определение
Методы
fmap :: (a -> b) -> f a -> f b Исходный код
Используя ApplicativeDo: 'fmap f as' можно понимать как выражение do
do a <- as pure (f a)
с неявным ограничением Functor.
(<$) :: a -> f b -> f a infixl 4 Исходный код
Замените все вхождения в входных данных на одно и то же значение. Определение по умолчанию — fmap . const, но оно может быть переопределено более эффективной версией.
Используя ApplicativeDo: 'a <$ bs' можно понимать как выражение do
do bs pure a
с неявным ограничением Functor.
Экземпляры
| Functor [] | С версии: base-2.1 |
| Functor Maybe | С версии: base-2.1 |
| Functor IO | С версии: base-2.1 |
| Functor Par1 | С версии: base-4.9.0.0 |
| Functor NonEmpty | С версии: base-4.9.0.0 |
| Functor NoIO | С версии: base-4.8.0.0 |
| Functor ReadP | С версии: base-2.1 |
| Functor ReadPrec | С версии: base-2.1 |
| Functor Down | С версии: base-4.11.0.0 |
| Functor Product | С версии: base-4.8.0.0 |
| Functor Sum | Since: base-4.8.0.0 |
| Functor Dual | Since: base-4.8.0.0 |
| Functor Last | Since: base-4.8.0.0 |
| Functor First | Since: base-4.8.0.0 |
| Functor STM | Since: base-4.3.0.0 |
| Functor Handler | Since: base-4.6.0.0 |
| Functor Identity | Since: base-4.8.0.0 |
| Functor ZipList | Since: base-2.1 |
| Functor ArgDescr | Since: base-4.6.0.0 |
| Functor OptDescr | Since: base-4.6.0.0 |
| Functor ArgOrder | Since: base-4.6.0.0 |
| Functor Option | Since: base-4.9.0.0 |
| Functor Last | Since: base-4.9.0.0 |
| Functor First | Since: base-4.9.0.0 |
| Functor Max | Since: base-4.9.0.0 |
| Functor Min | Since: base-4.9.0.0 |
| Functor Complex | Since: base-4.9.0.0 |
| Functor (Either a) | Since: base-3.0 |
| Functor (V1 :: Type -> Type) | Since: base-4.9.0.0 |
| Functor (U1 :: Type -> Type) | С версии: base-4.9.0.0 |
| Functor ((,) a) | С версии: base-2.1 |
| Functor (ST s) | С версии: base-2.1 |
| Functor (Array i) | С версии: base-2.1 |
| Functor (Proxy :: Type -> Type) | С версии: base-4.7.0.0 |
| Arrow a => Functor (ArrowMonad a) | С версии: base-4.6.0.0 |
Определено в Control.Arrow Методыfmap :: (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b Источник (<$) :: a0 -> ArrowMonad a b -> ArrowMonad a a0 Источник | |
| Monad m => Functor (WrappedMonad m) | С версии: base-2.1 |
Определено в Control.Applicative Методыfmap :: (a -> b) -> WrappedMonad m a -> WrappedMonad m b Источник (<$) :: a -> WrappedMonad m b -> WrappedMonad m a Источник | |
| Functor (ST s) | С версии: base-2.1 |
| Functor (Arg a) | С версии: base-4.9.0.0 |
| Functor f => Functor (Rec1 f) | С версии: base-4.9.0.0 |
| Functor (URec Char :: Type -> Type) | С версии: base-4.9.0.0 |
| Functor (URec Double :: Type -> Type) | С версии: base-4.9.0.0 |
| Functor (URec Float :: Type -> Type) | С версии: base-4.9.0.0 |
| Functor (URec Int :: Type -> Type) | С версии: base-4.9.0.0 |
| Functor (URec Word :: Type -> Type) | С версии: base-4.9.0.0 |
| Functor (URec (Ptr ()) :: Type -> Type) | С версии: base-4.9.0.0 |
| Functor ((,,) a b) | С версии: base-4.14.0.0 |
| Functor f => Functor (Alt f) | С момента версии: base-4.8.0.0 |
| Functor f => Functor (Ap f) | С момента версии: base-4.12.0.0 |
| Functor (Const m :: Type -> Type) | С момента версии: base-2.1 |
| Functor m => Functor (Kleisli m a) | С момента версии: base-4.14.0.0 |
| Arrow a => Functor (WrappedArrow a b) | С момента версии: base-2.1 |
Определено в Control.Applicative Методыfmap :: (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 Источник (<$) :: a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 Источник | |
| Functor ((->) r :: Type -> Type) | С момента версии: base-2.1 |
| Functor (K1 i c :: Type -> Type) | С момента версии: base-4.9.0.0 |
| (Functor f, Functor g) => Functor (f :+: g) | С момента версии: base-4.9.0.0 |
| (Functor f, Functor g) => Functor (f :*: g) | С момента версии: base-4.9.0.0 |
| Functor ((,,,) a b c) | Since: base-4.14.0.0 |
| (Functor f, Functor g) => Functor (Sum f g) | Since: base-4.9.0.0 |
| (Functor f, Functor g) => Functor (Product f g) | Since: base-4.9.0.0 |
| Functor f => Functor (M1 i c f) | Since: base-4.9.0.0 |
| (Functor f, Functor g) => Functor (f :.: g) | Since: base-4.9.0.0 |
| (Functor f, Functor g) => Functor (Compose f g) | Since: base-4.9.0.0 |
(<$>) :: Functor f => (a -> b) -> f a -> f b infixl 4 Source
Синоним инфиксной операции для fmap.
Название этого оператора является аллюзией на $. Обратите внимание на сходство между их типами:
($) :: (a -> b) -> a -> b (<$>) :: Functor f => (a -> b) -> f a -> f b
В то время как $ является применением функции, <$> является применением функции, поднятым над Functor.
Примеры
Преобразование из Maybe Int в Maybe
String с использованием show:
>>> show <$> Nothing Nothing >>> show <$> Just 3 Just "3"
Преобразование из Either Int Int в Either Int String с использованием show:
>>> show <$> Left 17 Left 17 >>> show <$> Right 17 Right "17"
Удвоение каждого элемента списка:
>>> (*2) <$> [1,2,3] [2,4,6]
Применение even ко второму элементу пары:
>>> even <$> (2,2) (2,True)
class Functor f => Applicative f where Source
Функтор с применением, предоставляющий операции для
- встраивания чистых выражений (
pure), и - последовательности вычислений и объединения их результатов (
<*>иliftA2).
Минимальное полное определение должно включать реализации pure и либо <*>, либо liftA2. Если определены оба, то они должны вести себя так же, как их определения по умолчанию:
(<*>) = liftA2 id
liftA2 f x y = f <$> x <*> y
Кроме того, любое определение должно удовлетворять следующим условиям:
- Идентичность
pure id <*> v = v
- Композиция
pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
- Гомоморфизм
pure f <*> pure x = pure (f x)
- Взаимозаменяемость
u <*> pure y = pure ($ y) <*> u
Другие методы имеют следующие определения по умолчанию, которые могут быть переопределены с помощью эквивалентных специализированных реализаций:
Как следствие этих законов, экземпляр Functor для f будет удовлетворять
Может быть полезно отметить, что предполагая
forall x y. p (q x y) = f x . g y
из вышеизложенного следует, что
liftA2 p (liftA2 q u v) = liftA2 f u . liftA2 g v
Если f также является Monad, он должен удовлетворять
(что подразумевает, что pure и <*> удовлетворяют законам аппликативного функтора).
Методы
Поднять значение.
(<*>) :: f (a -> b) -> f a -> f b infixl 4 Source
Последовательное применение.
Некоторые функторы поддерживают реализацию <*>, которая более эффективна, чем реализация по умолчанию.
Используя ApplicativeDo: 'fs <*> as' может быть понято как выражение do
do f <- fs a <- as pure (f a)
(*>) :: f a -> f b -> f b infixl 4 Source
Последовательность действий, отбрасывая значение первого аргумента.
'as *> bs' может быть понято как выражение do
do as bs
Это немного сложно для нашего расширения ApplicativeDo, которое наложит на него ограничение Monad. Для ограничения Applicative мы записываем его в форме
do _ <- as b <- bs pure b
(<*) :: f a -> f b -> f a infixl 4 Source
Последовательность действий, отбрасывая значение второго аргумента.
Используя ApplicativeDo: 'as <* bs' может быть понято как выражение do
do a <- as bs pure a
Примеры использования
| Applicative [] | С версии: base-2.1 |
| Applicative Maybe | С версии: base-2.1 |
| Applicative IO | С версии: base-2.1 |
| Applicative Par1 | С версии: base-4.9.0.0 |
| Applicative NonEmpty | С версии: base-4.9.0.0 |
Определено в GHC.Base | |
| Applicative NoIO | С версии: base-4.8.0.0 |
| Applicative ReadP | С версии: base-4.6.0.0 |
| Applicative ReadPrec | С версии: base-4.6.0.0 |
Определено в Text.ParserCombinators.ReadPrec | |
| Applicative Down | С версии: base-4.11.0.0 |
| Applicative Product | С версии: base-4.8.0.0 |
Определено в Data.Semigroup.Internal | |
| Applicative Sum | Since: base-4.8.0.0 |
| Applicative Dual | Since: base-4.8.0.0 |
| Applicative Last | Since: base-4.8.0.0 |
| Applicative First | Since: base-4.8.0.0 |
| Applicative STM | Since: base-4.8.0.0 |
| Applicative Identity | Since: base-4.8.0.0 |
Defined in Data.Functor.Identity | |
| Applicative ZipList |
f <$> ZipList xs1 <*> ... <*> ZipList xsN
= ZipList (zipWithN f xs1 ... xsN)
where (\a b c -> stimes c [a, b]) <$> ZipList "abcd" <*> ZipList "567" <*> ZipList [1..]
= ZipList (zipWith3 (\a b c -> stimes c [a, b]) "abcd" "567" [1..])
= ZipList {getZipList = ["a5","b6b6","c7c7c7"]}
Since: base-2.1 |
| Applicative Option | Since: base-4.9.0.0 |
| Applicative Last | Since: base-4.9.0.0 |
| Applicative First | С версии: base-4.9.0.0 |
| Applicative Max | С версии: base-4.9.0.0 |
| Applicative Min | С версии: base-4.9.0.0 |
| Applicative Complex | С версии: base-4.9.0.0 |
| Applicative (Either e) | Since: base-3.0 |
Определено в Data.Either | |
| Applicative (U1 :: Type -> Type) | Since: base-4.9.0.0 |
| Monoid a => Applicative ((,) a) |
Для кортежей, ограничение ("hello ", (+15)) <*> ("world!", 2002)
("hello world!",2017)
Since: base-2.1 |
| Applicative (ST s) | Since: base-4.4.0.0 |
Определено в GHC.Generics Методыpure :: a -> Rec1 f a Исходный код (<*>) :: Rec1 f (a -> b) -> Rec1 f a -> Rec1 f b Исходный код liftA2 :: (a -> b -> c) -> Rec1 f a -> Rec1 f b -> Rec1 f c Исходный код (*>) :: Rec1 f a -> Rec1 f b -> Rec1 f b Исходный код (<*) :: Rec1 f a -> Rec1 f b -> Rec1 f a Исходный код | |
| (Monoid a, Monoid b) => Applicative ((,,) a b) | С версии: base-4.14.0.0 |
Определено в GHC.Base Методыpure :: a0 -> (a, b, a0) Исходный код (<*>) :: (a, b, a0 -> b0) -> (a, b, a0) -> (a, b, b0) Исходный код liftA2 :: (a0 -> b0 -> c) -> (a, b, a0) -> (a, b, b0) -> (a, b, c) Исходный код (*>) :: (a, b, a0) -> (a, b, b0) -> (a, b, b0) Исходный код (<*) :: (a, b, a0) -> (a, b, b0) -> (a, b, a0) Исходный код | |
| Applicative f => Applicative (Alt f) | С версии: base-4.8.0.0 |
Определено в Data.Semigroup.Internal Методыpure :: a -> Alt f a Исходный код (<*>) :: Alt f (a -> b) -> Alt f a -> Alt f b Исходный код liftA2 :: (a -> b -> c) -> Alt f a -> Alt f b -> Alt f c Исходный код (*>) :: Alt f a -> Alt f b -> Alt f b Исходный код (<*) :: Alt f a -> Alt f b -> Alt f a Исходный код | |
| Applicative f => Applicative (Ap f) | С версии: base-4.12.0.0 |
Определено в Data.Monoid Методыpure :: a -> Ap f a Исходный код (<*>) :: Ap f (a -> b) -> Ap f a -> Ap f b Исходный код liftA2 :: (a -> b -> c) -> Ap f a -> Ap f b -> Ap f c Исходный код (*>) :: Ap f a -> Ap f b -> Ap f b Исходный код (<*) :: Ap f a -> Ap f b -> Ap f a Исходный код | |
| Monoid m => Applicative (Const m :: Type -> Type) | С версии: base-2.0.1 |
Определено в Data.Functor.Const Методыpure :: a -> Const m a Исходный код (<*>) :: Const m (a -> b) -> Const m a -> Const m b Исходный код liftA2 :: (a -> b -> c) -> Const m a -> Const m b -> Const m c Исходный код (*>) :: Const m a -> Const m b -> Const m b Исходный код (<*) :: Const m a -> Const m b -> Const m a Исходный код | |
| Applicative m => Applicative (Kleisli m a) | Since: base-4.14.0.0 |
Определено в Control.Arrow Методыpure :: a0 -> Kleisli m a a0 Source (<*>) :: Kleisli m a (a0 -> b) -> Kleisli m a a0 -> Kleisli m a b Source liftA2 :: (a0 -> b -> c) -> Kleisli m a a0 -> Kleisli m a b -> Kleisli m a c Source (*>) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a b Source (<*) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a a0 Source | |
| Arrow a => Applicative (WrappedArrow a b) | Since: base-2.1 |
Определено в Control.Applicative Методыpure :: a0 -> WrappedArrow a b a0 Source (<*>) :: WrappedArrow a b (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 Source liftA2 :: (a0 -> b0 -> c) -> WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b c Source (*>) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b b0 Source (<*) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 Source | |
| Applicative ((->) r :: Type -> Type) | Since: base-2.1 |
| Monoid c => Applicative (K1 i c :: Type -> Type) | Since: base-4.12.0.0 |
| (Applicative f, Applicative g) => Applicative (f :*: g) | Since: base-4.9.0.0 |
Определено в GHC.Generics Методыpure :: a -> (f :*: g) a Исходный код (<*>) :: (f :*: g) (a -> b) -> (f :*: g) a -> (f :*: g) b Исходный код liftA2 :: (a -> b -> c) -> (f :*: g) a -> (f :*: g) b -> (f :*: g) c Исходный код (*>) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b Исходный код (<*) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) a Исходный код | |
| (Monoid a, Monoid b, Monoid c) => Applicative ((,,,) a b c) | С версии: base-4.14.0.0 |
Определено в GHC.Base Методыpure :: a0 -> (a, b, c, a0) Исходный код (<*>) :: (a, b, c, a0 -> b0) -> (a, b, c, a0) -> (a, b, c, b0) Исходный код liftA2 :: (a0 -> b0 -> c0) -> (a, b, c, a0) -> (a, b, c, b0) -> (a, b, c, c0) Исходный код (*>) :: (a, b, c, a0) -> (a, b, c, b0) -> (a, b, c, b0) Исходный код (<*) :: (a, b, c, a0) -> (a, b, c, b0) -> (a, b, c, a0) Исходный код | |
| (Applicative f, Applicative g) => Applicative (Product f g) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Product Методыpure :: a -> Product f g a Исходный код (<*>) :: Product f g (a -> b) -> Product f g a -> Product f g b Исходный код liftA2 :: (a -> b -> c) -> Product f g a -> Product f g b -> Product f g c Исходный код (*>) :: Product f g a -> Product f g b -> Product f g b Исходный код (<*) :: Product f g a -> Product f g b -> Product f g a Исходный код | |
| Applicative f => Applicative (M1 i c f) | С версии: base-4.9.0.0 |
Определено в GHC.Generics Методыpure :: a -> M1 i c f a Исходный код (<*>) :: M1 i c f (a -> b) -> M1 i c f a -> M1 i c f b Исходный код liftA2 :: (a -> b -> c0) -> M1 i c f a -> M1 i c f b -> M1 i c f c0 Исходный код (*>) :: M1 i c f a -> M1 i c f b -> M1 i c f b Исходный код (<*) :: M1 i c f a -> M1 i c f b -> M1 i c f a Исходный код | |
| (Applicative f, Applicative g) => Applicative (f :.: g) | С версии: base-4.9.0.0 |
Определено в GHC.Generics | |
| (Applicative f, Applicative g) => Applicative (Compose f g) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Compose Методыpure :: a -> Compose f g a Source (<*>) :: Compose f g (a -> b) -> Compose f g a -> Compose f g b Source liftA2 :: (a -> b -> c) -> Compose f g a -> Compose f g b -> Compose f g c Source (*>) :: Compose f g a -> Compose f g b -> Compose f g b Source (<*) :: Compose f g a -> Compose f g b -> Compose f g a Source | |
class Applicative m => Monad m where Source
Класс Monad определяет основные операции над монадой, концепцией из раздела математики, известного как теория категорий. Однако с точки зрения программиста Haskell, лучше всего рассматривать монаду как абстрактный тип данных действий. Выражения Haskell's do предоставляют удобный синтаксис для написания монадических выражений.
Экземпляры Monad должны удовлетворять следующим условиям:
- Левый тождество
return a >>= k = k a- Правый тождество
m >>= return = m- Ассоциативность
m >>= (\x -> k x >>= h) = (m >>= k) >>= h
Кроме того, операции Monad и Applicative должны быть связаны следующим образом:
Вышеуказанные законы подразумевают:
и что pure и (<*>) удовлетворяют законам аппликативного функтора.
Экземпляры Monad для списков, Maybe и IO, определенные в Prelude, удовлетворяют этим законам.
Минимальное полное определение
Методы
(>>=) :: forall a b. m a -> (a -> m b) -> m b infixl 1 Source
Последовательно компонует два действия, передавая любое значение, полученное первым, в качестве аргумента второму.
'as >>= bs' можно понимать как выражение do
do a <- as bs a
(>>) :: forall a b. m a -> m b -> m b infixl 1 Source
Последовательно компонует два действия, отбрасывая любое значение, полученное первым, как операторы последовательности (например, точка с запятой) в императивных языках.
'as >> bs' можно понимать как выражение do
do as bs
Вставляет значение в монадический тип.
| Monad (Either e) | Since: base-4.4.0.0 |
| Monad (U1 :: Type -> Type) | Since: base-4.9.0.0 |
| Monoid a => Monad ((,) a) | Since: base-4.9.0.0 |
| Monad (ST s) | Since: base-2.1 |
| Monad (Proxy :: Type -> Type) | Since: base-4.7.0.0 |
| ArrowApply a => Monad (ArrowMonad a) | Since: base-2.1 |
Defined in Control.Arrow Методы(>>=) :: ArrowMonad a a0 -> (a0 -> ArrowMonad a b) -> ArrowMonad a b Source (>>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b Source return :: a0 -> ArrowMonad a a0 Source | |
| Monad m => Monad (WrappedMonad m) | Since: base-4.7.0.0 |
Определено в Control.Applicative Методы(>>=) :: WrappedMonad m a -> (a -> WrappedMonad m b) -> WrappedMonad m b Source (>>) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b Source return :: a -> WrappedMonad m a Source | |
| Monad (ST s) | Since: base-2.1 |
| Monad f => Monad (Rec1 f) | Since: base-4.9.0.0 |
| (Monoid a, Monoid b) => Monad ((,,) a b) | Since: base-4.14.0.0 |
| Monad f => Monad (Alt f) | Since: base-4.8.0.0 |
| Monad f => Monad (Ap f) | Since: base-4.12.0.0 |
| Monad m => Monad (Kleisli m a) | Since: base-4.14.0.0 |
| Monad ((->) r :: Type -> Type) | Since: base-2.1 |
class Monad m => MonadFail m where Источник
Когда значение привязывается в do-нотации, шаблон в левой части <- может не совпадать. В этом случае, этот класс предоставляет функцию для восстановления.
A Monad without a MonadFail instance may only be used in conjunction with pattern that always match, such as newtypes, tuples, data types with only a single data constructor, and irrefutable patterns (~pat).
Instances of MonadFail should satisfy the following law: fail s should be a left zero for >>=,
fail s >>= f = fail s
Если ваш Monad также MonadPlus, популярное определение:
fail _ = mzero
С версии: base-4.9.0.0
Экземпляры
| MonadFail [] | С версии: base-4.9.0.0 |
Определено в Control.Monad.Fail Методыfail :: String -> [a] Исходный код | |
| MonadFail Maybe | С версии: base-4.9.0.0 |
Определено в Control.Monad.Fail Методыfail :: String -> Maybe a Исходный код | |
| MonadFail IO | С версии: base-4.9.0.0 |
Определено в Control.Monad.Fail Методыfail :: String -> IO a Исходный код | |
| MonadFail ReadP | С версии: base-4.9.0.0 |
Определено в Text.ParserCombinators.ReadP Методыfail :: String -> ReadP a Исходный код | |
| MonadFail ReadPrec | С версии: base-4.9.0.0 |
Определено в Text.ParserCombinators.ReadPrec Методыfail :: String -> ReadPrec a Исходный код | |
| MonadFail (ST s) | С версии: base-4.11.0.0 |
Определено в GHC.ST Методыfail :: String -> ST s a Исходный код | |
| MonadFail (ST s) | С версии: base-4.10 |
Определено в Control.Monad.ST.Lazy.Imp Методыfail :: String -> ST s a Исходный код | |
| MonadFail f => MonadFail (Ap f) | С версии: base-4.12.0.0 |
Определено в Data.Monoid Методыfail :: String -> Ap f a Исходный код | |
mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m () Исходный код
Сопоставляет каждый элемент структуры с монадным действием, вычисляет эти действия слева направо и игнорирует результаты. За версией, которая не игнорирует результаты, см. mapM.
Начиная с base 4.8.0.0, mapM_ это просто traverse_, специализированный для Monad.
sequence_ :: (Foldable t, Monad m) => t (m a) -> m () Исходный код
Вычисляет каждое монадное действие в структуре слева направо и игнорирует результаты. За версией, которая не игнорирует результаты, см. sequence.
Начиная с base 4.8.0.0, sequence_ это просто sequenceA_, специализированный для Monad.
(=<<) :: Monad m => (a -> m b) -> m a -> m b infixr 1 Исходный код
То же, что и >>=, но с переставленными аргументами.
Сворачивания и обходы
class Foldable t where Исходный код
Структуры данных, которые можно свернуть.
Например, учитывая тип данных
data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
подходящий экземпляр будет
instance Foldable Tree where foldMap f Empty = mempty foldMap f (Leaf x) = f x foldMap f (Node l k r) = foldMap f l `mappend` f k `mappend` foldMap f r
Это подходит даже для абстрактных типов, поскольку предполагается, что моноид удовлетворяет законам моноида. В качестве альтернативы можно определить foldr:
instance Foldable Tree where foldr f z Empty = z foldr f z (Leaf x) = f x z foldr f z (Node l k r) = foldr f (f k (foldr f z r)) l
От экземпляров Foldable ожидается, что они будут удовлетворять следующим законам:
foldr f z t = appEndo (foldMap (Endo . f) t ) z
foldl f z t = appEndo (getDual (foldMap (Dual . Endo . flip f) t)) z
fold = foldMap id
length = getSum . foldMap (Sum . const 1)
sum, product, maximum и minimum должны быть по существу эквивалентны формам foldMap, таким как
sum = getSum . foldMap Sum
но могут быть менее определенными.
Если тип также является экземпляром Functor, он должен удовлетворять
foldMap f = fold . fmap f
что подразумевает, что
foldMap f . fmap g = foldMap (f . g)
Краткое описание методов
foldMap :: Monoid m => (a -> m) -> t a -> m Source
Сопоставляет каждый элемент структуры с моноидом и объединяет результаты.
foldr :: (a -> b -> b) -> b -> t a -> b Source
Правоассоциативная свертка структуры.
В случае списков, foldr, при применении к бинарному оператору, начальному значению (обычно правому нейтральному элементу оператора) и списку, сводит список, используя бинарный оператор, справа налево:
foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)
Обратите внимание, что, поскольку головная часть результирующего выражения получается в результате применения оператора к первому элементу списка, foldr может создать завершающееся выражение из бесконечного списка.
Для общей структуры Foldable это должно быть семантически идентично,
foldr f z = foldr f z . toList
foldl :: (b -> a -> b) -> b -> t a -> b Source
Левоассоциативная свертка структуры.
В случае списков, foldl, при применении к бинарному оператору, начальному значению (обычно левому нейтральному элементу оператора) и списку, сводит список, используя бинарный оператор, слева направо:
foldl f z [x1, x2, ..., xn] == (...((z `f` x1) `f` x2) `f`...) `f` xn
Обратите внимание, что для получения самого внешнего применения оператора необходимо пройти весь входной список. Это означает, что foldl' будет расходиться, если ему будет предоставлен бесконечный список.
Также обратите внимание, что если вам нужна эффективная левосторонняя свертка, вам, вероятно, следует использовать foldl' вместо foldl. Причина этого в том, что последнее не принудительно вычисляет "внутренние" результаты (например, z `f` x1 в приведенном выше примере) перед применением их к оператору (например, к (`f` x2)). Это приводит к цепочке вычислений длиной \(\mathcal{O}(n)\) элементов, которые затем должны вычисляться снаружи внутрь.
Для общей структуры Foldable это должно быть семантически идентично,
foldl f z = foldl f z . toList
foldr1 :: (a -> a -> a) -> t a -> a Source
Вариант foldr, у которого нет базового случая, и поэтому он может применяться только к непустым структурам.
foldr1 f = foldr1 f . toList
foldl1 :: (a -> a -> a) -> t a -> a Source
Вариант foldl, у которого нет базового случая, и поэтому он может применяться только к непустым структурам.
foldl1 f = foldl1 f . toList
elem :: Eq a => a -> t a -> Bool infix 4 Source
Содержит ли структура данный элемент?
Since: base-4.8.0.0
maximum :: forall a. Ord a => t a -> a Source
Наибольший элемент непустой структуры.
Since: base-4.8.0.0
minimum :: forall a. Ord a => t a -> a Source
Наименьший элемент непустой структуры.
Since: base-4.8.0.0
sum :: Num a => t a -> a Source
Функция sum вычисляет сумму чисел структуры.
Since: base-4.8.0.0
product :: Num a => t a -> a Source
Функция product вычисляет произведение чисел структуры.
Since: base-4.8.0.0
Экземпляры
| Foldable [] | Since: base-2.1 |
Определено в Data.Foldable Методыfold :: Monoid m => [m] -> m Source foldMap :: Monoid m => (a -> m) -> [a] -> m Source foldMap' :: Monoid m => (a -> m) -> [a] -> m Source foldr :: (a -> b -> b) -> b -> [a] -> b Source foldr' :: (a -> b -> b) -> b -> [a] -> b Source foldl :: (b -> a -> b) -> b -> [a] -> b Source foldl' :: (b -> a -> b) -> b -> [a] -> b Source foldr1 :: (a -> a -> a) -> [a] -> a Source foldl1 :: (a -> a -> a) -> [a] -> a Source elem :: Eq a => a -> [a] -> Bool Source maximum :: Ord a => [a] -> a Source minimum :: Ord a => [a] -> a Source | |
| Foldable Maybe | Since: base-2.1 |
Определено в Data.Foldable Методыfold :: Monoid m => Maybe m -> m Source foldMap :: Monoid m => (a -> m) -> Maybe a -> m Source foldMap' :: Monoid m => (a -> m) -> Maybe a -> m Source foldr :: (a -> b -> b) -> b -> Maybe a -> b Source foldr' :: (a -> b -> b) -> b -> Maybe a -> b Source foldl :: (b -> a -> b) -> b -> Maybe a -> b Source foldl' :: (b -> a -> b) -> b -> Maybe a -> b Source foldr1 :: (a -> a -> a) -> Maybe a -> a Source foldl1 :: (a -> a -> a) -> Maybe a -> a Source toList :: Maybe a -> [a] Source null :: Maybe a -> Bool Source length :: Maybe a -> Int Source elem :: Eq a => a -> Maybe a -> Bool Source maximum :: Ord a => Maybe a -> a Source minimum :: Ord a => Maybe a -> a Source | |
| Foldable Par1 | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => Par1 m -> m Source foldMap :: Monoid m => (a -> m) -> Par1 a -> m Source foldMap' :: Monoid m => (a -> m) -> Par1 a -> m Source foldr :: (a -> b -> b) -> b -> Par1 a -> b Source foldr' :: (a -> b -> b) -> b -> Par1 a -> b Source foldl :: (b -> a -> b) -> b -> Par1 a -> b Source foldl' :: (b -> a -> b) -> b -> Par1 a -> b Source foldr1 :: (a -> a -> a) -> Par1 a -> a Source foldl1 :: (a -> a -> a) -> Par1 a -> a Source toList :: Par1 a -> [a] Source length :: Par1 a -> Int Source elem :: Eq a => a -> Par1 a -> Bool Source maximum :: Ord a => Par1 a -> a Source minimum :: Ord a => Par1 a -> a Source | |
| Foldable NonEmpty | С версии: base-4.9.0.0 |
Определено в 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 | |
| Foldable Down | Since: base-4.12.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => Down m -> m Source foldMap :: Monoid m => (a -> m) -> Down a -> m Source foldMap' :: Monoid m => (a -> m) -> Down a -> m Source foldr :: (a -> b -> b) -> b -> Down a -> b Source foldr' :: (a -> b -> b) -> b -> Down a -> b Source foldl :: (b -> a -> b) -> b -> Down a -> b Source foldl' :: (b -> a -> b) -> b -> Down a -> b Source foldr1 :: (a -> a -> a) -> Down a -> a Source foldl1 :: (a -> a -> a) -> Down a -> a Source toList :: Down a -> [a] Source length :: Down a -> Int Source elem :: Eq a => a -> Down a -> Bool Source maximum :: Ord a => Down a -> a Source minimum :: Ord a => Down a -> a Source | |
| Foldable Product | Since: base-4.8.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => Product m -> m Source foldMap :: Monoid m => (a -> m) -> Product a -> m Source foldMap' :: Monoid m => (a -> m) -> Product a -> m Source foldr :: (a -> b -> b) -> b -> Product a -> b Source foldr' :: (a -> b -> b) -> b -> Product a -> b Source foldl :: (b -> a -> b) -> b -> Product a -> b Source foldl' :: (b -> a -> b) -> b -> Product a -> b Source foldr1 :: (a -> a -> a) -> Product a -> a Source foldl1 :: (a -> a -> a) -> Product a -> a Source toList :: Product a -> [a] Source null :: Product a -> Bool Source length :: Product a -> Int Source elem :: Eq a => a -> Product a -> Bool Source maximum :: Ord a => Product a -> a Source minimum :: Ord a => Product a -> a Source | |
| Foldable Sum | Since: base-4.8.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => Sum m -> m Source foldMap :: Monoid m => (a -> m) -> Sum a -> m Source foldMap' :: Monoid m => (a -> m) -> Sum a -> m Source foldr :: (a -> b -> b) -> b -> Sum a -> b Source foldr' :: (a -> b -> b) -> b -> Sum a -> b Source foldl :: (b -> a -> b) -> b -> Sum a -> b Source foldl' :: (b -> a -> b) -> b -> Sum a -> b Source foldr1 :: (a -> a -> a) -> Sum a -> a Source foldl1 :: (a -> a -> a) -> Sum a -> a Source elem :: Eq a => a -> Sum a -> Bool Source maximum :: Ord a => Sum a -> a Source minimum :: Ord a => Sum a -> a Source | |
| Foldable Dual | С версии: base-4.8.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => Dual m -> m Source foldMap :: Monoid m => (a -> m) -> Dual a -> m Source foldMap' :: Monoid m => (a -> m) -> Dual a -> m Source foldr :: (a -> b -> b) -> b -> Dual a -> b Source foldr' :: (a -> b -> b) -> b -> Dual a -> b Source foldl :: (b -> a -> b) -> b -> Dual a -> b Source foldl' :: (b -> a -> b) -> b -> Dual a -> b Source foldr1 :: (a -> a -> a) -> Dual a -> a Source foldl1 :: (a -> a -> a) -> Dual a -> a Source toList :: Dual a -> [a] Source length :: Dual a -> Int Source elem :: Eq a => a -> Dual a -> Bool Source maximum :: Ord a => Dual a -> a Source minimum :: Ord a => Dual a -> a Source | |
| Foldable Last | С версии: base-4.8.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => Last m -> m Source foldMap :: Monoid m => (a -> m) -> Last a -> m Source foldMap' :: Monoid m => (a -> m) -> Last a -> m Source foldr :: (a -> b -> b) -> b -> Last a -> b Source foldr' :: (a -> b -> b) -> b -> Last a -> b Source foldl :: (b -> a -> b) -> b -> Last a -> b Source foldl' :: (b -> a -> b) -> b -> Last a -> b Source foldr1 :: (a -> a -> a) -> Last a -> a Source foldl1 :: (a -> a -> a) -> Last a -> a Source toList :: Last a -> [a] Source length :: Last a -> Int Source elem :: Eq a => a -> Last a -> Bool Source maximum :: Ord a => Last a -> a Source minimum :: Ord a => Last a -> a Source | |
| Foldable First | С версии: base-4.8.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => First m -> m Source foldMap :: Monoid m => (a -> m) -> First a -> m Source foldMap' :: Monoid m => (a -> m) -> First a -> m Source foldr :: (a -> b -> b) -> b -> First a -> b Source foldr' :: (a -> b -> b) -> b -> First a -> b Source foldl :: (b -> a -> b) -> b -> First a -> b Source foldl' :: (b -> a -> b) -> b -> First a -> b Source foldr1 :: (a -> a -> a) -> First a -> a Source foldl1 :: (a -> a -> a) -> First a -> a Source toList :: First a -> [a] Source null :: First a -> Bool Source length :: First a -> Int Source elem :: Eq a => a -> First a -> Bool Source maximum :: Ord a => First a -> a Source minimum :: Ord a => First a -> a Source | |
| Foldable Identity | С версии: base-4.8.0.0 |
Определено в Data.Functor.Identity Краткое описание методовfold :: Monoid m => Identity m -> m Source foldMap :: Monoid m => (a -> m) -> Identity a -> m Source foldMap' :: Monoid m => (a -> m) -> Identity a -> m Source foldr :: (a -> b -> b) -> b -> Identity a -> b Source foldr' :: (a -> b -> b) -> b -> Identity a -> b Source foldl :: (b -> a -> b) -> b -> Identity a -> b Source foldl' :: (b -> a -> b) -> b -> Identity a -> b Source foldr1 :: (a -> a -> a) -> Identity a -> a Source foldl1 :: (a -> a -> a) -> Identity a -> a Source toList :: Identity a -> [a] Source null :: Identity a -> Bool Source length :: Identity a -> Int Source elem :: Eq a => a -> Identity a -> Bool Source maximum :: Ord a => Identity a -> a Source minimum :: Ord a => Identity a -> a Source | |
| Foldable ZipList | С версии: base-4.9.0.0 |
Определено в Control.Applicative Методыfold :: Monoid m => ZipList m -> m Source foldMap :: Monoid m => (a -> m) -> ZipList a -> m Source foldMap' :: Monoid m => (a -> m) -> ZipList a -> m Source foldr :: (a -> b -> b) -> b -> ZipList a -> b Source foldr' :: (a -> b -> b) -> b -> ZipList a -> b Source foldl :: (b -> a -> b) -> b -> ZipList a -> b Source foldl' :: (b -> a -> b) -> b -> ZipList a -> b Source foldr1 :: (a -> a -> a) -> ZipList a -> a Source foldl1 :: (a -> a -> a) -> ZipList a -> a Source toList :: ZipList a -> [a] Source null :: ZipList a -> Bool Source length :: ZipList a -> Int Source elem :: Eq a => a -> ZipList a -> Bool Source maximum :: Ord a => ZipList a -> a Source minimum :: Ord a => ZipList a -> a Source | |
| Foldable Option | С версии: base-4.9.0.0 |
Определено в Data.Semigroup Методыfold :: Monoid m => Option m -> m Source foldMap :: Monoid m => (a -> m) -> Option a -> m Source foldMap' :: Monoid m => (a -> m) -> Option a -> m Source foldr :: (a -> b -> b) -> b -> Option a -> b Source foldr' :: (a -> b -> b) -> b -> Option a -> b Source foldl :: (b -> a -> b) -> b -> Option a -> b Source foldl' :: (b -> a -> b) -> b -> Option a -> b Source foldr1 :: (a -> a -> a) -> Option a -> a Source foldl1 :: (a -> a -> a) -> Option a -> a Source toList :: Option a -> [a] Source null :: Option a -> Bool Source length :: Option a -> Int Source elem :: Eq a => a -> Option a -> Bool Source maximum :: Ord a => Option a -> a Source minimum :: Ord a => Option a -> a Source | |
| Foldable Last | С версии: base-4.9.0.0 |
Определено в Data.Semigroup Методыfold :: Monoid m => Last m -> m Source foldMap :: Monoid m => (a -> m) -> Last a -> m Source foldMap' :: Monoid m => (a -> m) -> Last a -> m Source foldr :: (a -> b -> b) -> b -> Last a -> b Source foldr' :: (a -> b -> b) -> b -> Last a -> b Source foldl :: (b -> a -> b) -> b -> Last a -> b Source foldl' :: (b -> a -> b) -> b -> Last a -> b Source foldr1 :: (a -> a -> a) -> Last a -> a Source foldl1 :: (a -> a -> a) -> Last a -> a Source toList :: Last a -> [a] Source length :: Last a -> Int Source elem :: Eq a => a -> Last a -> Bool Source maximum :: Ord a => Last a -> a Source minimum :: Ord a => Last a -> a Source | |
| Foldable First | Since: base-4.9.0.0 |
Определено в Data.Semigroup Методыfold :: Monoid m => First m -> m Source foldMap :: Monoid m => (a -> m) -> First a -> m Source foldMap' :: Monoid m => (a -> m) -> First a -> m Source foldr :: (a -> b -> b) -> b -> First a -> b Source foldr' :: (a -> b -> b) -> b -> First a -> b Source foldl :: (b -> a -> b) -> b -> First a -> b Source foldl' :: (b -> a -> b) -> b -> First a -> b Source foldr1 :: (a -> a -> a) -> First a -> a Source foldl1 :: (a -> a -> a) -> First a -> a Source toList :: First a -> [a] Source null :: First a -> Bool Source length :: First a -> Int Source elem :: Eq a => a -> First a -> Bool Source maximum :: Ord a => First a -> a Source minimum :: Ord a => First a -> a Source | |
| Foldable Max | Since: base-4.9.0.0 |
Определено в Data.Semigroup Методыfold :: Monoid m => Max m -> m Source foldMap :: Monoid m => (a -> m) -> Max a -> m Source foldMap' :: Monoid m => (a -> m) -> Max a -> m Source foldr :: (a -> b -> b) -> b -> Max a -> b Source foldr' :: (a -> b -> b) -> b -> Max a -> b Source foldl :: (b -> a -> b) -> b -> Max a -> b Source foldl' :: (b -> a -> b) -> b -> Max a -> b Source foldr1 :: (a -> a -> a) -> Max a -> a Source foldl1 :: (a -> a -> a) -> Max a -> a Source elem :: Eq a => a -> Max a -> Bool Source maximum :: Ord a => Max a -> a Source minimum :: Ord a => Max a -> a Source | |
| Foldable Min | Since: base-4.9.0.0 |
Defined in Data.Semigroup Методыfold :: Monoid m => Min m -> m Source foldMap :: Monoid m => (a -> m) -> Min a -> m Source foldMap' :: Monoid m => (a -> m) -> Min a -> m Source foldr :: (a -> b -> b) -> b -> Min a -> b Source foldr' :: (a -> b -> b) -> b -> Min a -> b Source foldl :: (b -> a -> b) -> b -> Min a -> b Source foldl' :: (b -> a -> b) -> b -> Min a -> b Source foldr1 :: (a -> a -> a) -> Min a -> a Source foldl1 :: (a -> a -> a) -> Min a -> a Source elem :: Eq a => a -> Min a -> Bool Source maximum :: Ord a => Min a -> a Source minimum :: Ord a => Min a -> a Source | |
| Foldable Complex | Since: base-4.9.0.0 |
Defined in Data.Complex Методыfold :: Monoid m => Complex m -> m Source foldMap :: Monoid m => (a -> m) -> Complex a -> m Source foldMap' :: Monoid m => (a -> m) -> Complex a -> m Source foldr :: (a -> b -> b) -> b -> Complex a -> b Source foldr' :: (a -> b -> b) -> b -> Complex a -> b Source foldl :: (b -> a -> b) -> b -> Complex a -> b Source foldl' :: (b -> a -> b) -> b -> Complex a -> b Source foldr1 :: (a -> a -> a) -> Complex a -> a Source foldl1 :: (a -> a -> a) -> Complex a -> a Source toList :: Complex a -> [a] Source null :: Complex a -> Bool Source length :: Complex a -> Int Source elem :: Eq a => a -> Complex a -> Bool Source maximum :: Ord a => Complex a -> a Source minimum :: Ord a => Complex a -> a Source | |
| Foldable (Either a) | Since: base-4.7.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => Either a m -> m Source foldMap :: Monoid m => (a0 -> m) -> Either a a0 -> m Source foldMap' :: Monoid m => (a0 -> m) -> Either a a0 -> m Source foldr :: (a0 -> b -> b) -> b -> Either a a0 -> b Source foldr' :: (a0 -> b -> b) -> b -> Either a a0 -> b Source foldl :: (b -> a0 -> b) -> b -> Either a a0 -> b Source foldl' :: (b -> a0 -> b) -> b -> Either a a0 -> b Source foldr1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 Source foldl1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 Source toList :: Either a a0 -> [a0] Source null :: Either a a0 -> Bool Source length :: Either a a0 -> Int Source elem :: Eq a0 => a0 -> Either a a0 -> Bool Source maximum :: Ord a0 => Either a a0 -> a0 Source minimum :: Ord a0 => Either a a0 -> a0 Source | |
| Foldable (V1 :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => V1 m -> m Source foldMap :: Monoid m => (a -> m) -> V1 a -> m Source foldMap' :: Monoid m => (a -> m) -> V1 a -> m Source foldr :: (a -> b -> b) -> b -> V1 a -> b Source foldr' :: (a -> b -> b) -> b -> V1 a -> b Source foldl :: (b -> a -> b) -> b -> V1 a -> b Source foldl' :: (b -> a -> b) -> b -> V1 a -> b Source foldr1 :: (a -> a -> a) -> V1 a -> a Source foldl1 :: (a -> a -> a) -> V1 a -> a Source elem :: Eq a => a -> V1 a -> Bool Source maximum :: Ord a => V1 a -> a Source minimum :: Ord a => V1 a -> a Source | |
| Foldable (U1 :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => U1 m -> m Source foldMap :: Monoid m => (a -> m) -> U1 a -> m Source foldMap' :: Monoid m => (a -> m) -> U1 a -> m Source foldr :: (a -> b -> b) -> b -> U1 a -> b Source foldr' :: (a -> b -> b) -> b -> U1 a -> b Source foldl :: (b -> a -> b) -> b -> U1 a -> b Source foldl' :: (b -> a -> b) -> b -> U1 a -> b Source foldr1 :: (a -> a -> a) -> U1 a -> a Source foldl1 :: (a -> a -> a) -> U1 a -> a Source elem :: Eq a => a -> U1 a -> Bool Source maximum :: Ord a => U1 a -> a Source minimum :: Ord a => U1 a -> a Source | |
| Foldable (UAddr :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UAddr m -> m Source foldMap :: Monoid m => (a -> m) -> UAddr a -> m Source foldMap' :: Monoid m => (a -> m) -> UAddr a -> m Source foldr :: (a -> b -> b) -> b -> UAddr a -> b Source foldr' :: (a -> b -> b) -> b -> UAddr a -> b Source foldl :: (b -> a -> b) -> b -> UAddr a -> b Source foldl' :: (b -> a -> b) -> b -> UAddr a -> b Source foldr1 :: (a -> a -> a) -> UAddr a -> a Source foldl1 :: (a -> a -> a) -> UAddr a -> a Source toList :: UAddr a -> [a] Source null :: UAddr a -> Bool Source length :: UAddr a -> Int Source elem :: Eq a => a -> UAddr a -> Bool Source maximum :: Ord a => UAddr a -> a Source minimum :: Ord a => UAddr a -> a Source | |
| Foldable (UChar :: Type -> Type) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UChar m -> m Source foldMap :: Monoid m => (a -> m) -> UChar a -> m Source foldMap' :: Monoid m => (a -> m) -> UChar a -> m Source foldr :: (a -> b -> b) -> b -> UChar a -> b Source foldr' :: (a -> b -> b) -> b -> UChar a -> b Source foldl :: (b -> a -> b) -> b -> UChar a -> b Source foldl' :: (b -> a -> b) -> b -> UChar a -> b Source foldr1 :: (a -> a -> a) -> UChar a -> a Source foldl1 :: (a -> a -> a) -> UChar a -> a Source toList :: UChar a -> [a] Source null :: UChar a -> Bool Source length :: UChar a -> Int Source elem :: Eq a => a -> UChar a -> Bool Source maximum :: Ord a => UChar a -> a Source minimum :: Ord a => UChar a -> a Source | |
| Foldable (UDouble :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UDouble m -> m Source foldMap :: Monoid m => (a -> m) -> UDouble a -> m Source foldMap' :: Monoid m => (a -> m) -> UDouble a -> m Source foldr :: (a -> b -> b) -> b -> UDouble a -> b Source foldr' :: (a -> b -> b) -> b -> UDouble a -> b Source foldl :: (b -> a -> b) -> b -> UDouble a -> b Source foldl' :: (b -> a -> b) -> b -> UDouble a -> b Source foldr1 :: (a -> a -> a) -> UDouble a -> a Source foldl1 :: (a -> a -> a) -> UDouble a -> a Source toList :: UDouble a -> [a] Source null :: UDouble a -> Bool Source length :: UDouble a -> Int Source elem :: Eq a => a -> UDouble a -> Bool Source maximum :: Ord a => UDouble a -> a Source minimum :: Ord a => UDouble a -> a Source | |
| Foldable (UFloat :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UFloat m -> m Source foldMap :: Monoid m => (a -> m) -> UFloat a -> m Source foldMap' :: Monoid m => (a -> m) -> UFloat a -> m Source foldr :: (a -> b -> b) -> b -> UFloat a -> b Source foldr' :: (a -> b -> b) -> b -> UFloat a -> b Source foldl :: (b -> a -> b) -> b -> UFloat a -> b Source foldl' :: (b -> a -> b) -> b -> UFloat a -> b Source foldr1 :: (a -> a -> a) -> UFloat a -> a Source foldl1 :: (a -> a -> a) -> UFloat a -> a Source toList :: UFloat a -> [a] Source null :: UFloat a -> Bool Source length :: UFloat a -> Int Source elem :: Eq a => a -> UFloat a -> Bool Source maximum :: Ord a => UFloat a -> a Source minimum :: Ord a => UFloat a -> a Source | |
| Foldable (UInt :: Type -> Type) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => UInt m -> m Source foldMap :: Monoid m => (a -> m) -> UInt a -> m Source foldMap' :: Monoid m => (a -> m) -> UInt a -> m Source foldr :: (a -> b -> b) -> b -> UInt a -> b Source foldr' :: (a -> b -> b) -> b -> UInt a -> b Source foldl :: (b -> a -> b) -> b -> UInt a -> b Source foldl' :: (b -> a -> b) -> b -> UInt a -> b Source foldr1 :: (a -> a -> a) -> UInt a -> a Source foldl1 :: (a -> a -> a) -> UInt a -> a Source toList :: UInt a -> [a] Source length :: UInt a -> Int Source elem :: Eq a => a -> UInt a -> Bool Source maximum :: Ord a => UInt a -> a Source minimum :: Ord a => UInt a -> a Source | |
| Foldable (UWord :: Type -> Type) | Since: base-4.9.0.0 |
Defined in Data.Foldable Методыfold :: Monoid m => UWord m -> m Source foldMap :: Monoid m => (a -> m) -> UWord a -> m Source foldMap' :: Monoid m => (a -> m) -> UWord a -> m Source foldr :: (a -> b -> b) -> b -> UWord a -> b Source foldr' :: (a -> b -> b) -> b -> UWord a -> b Source foldl :: (b -> a -> b) -> b -> UWord a -> b Source foldl' :: (b -> a -> b) -> b -> UWord a -> b Source foldr1 :: (a -> a -> a) -> UWord a -> a Source foldl1 :: (a -> a -> a) -> UWord a -> a Source toList :: UWord a -> [a] Source null :: UWord a -> Bool Source length :: UWord a -> Int Source elem :: Eq a => a -> UWord a -> Bool Source maximum :: Ord a => UWord a -> a Source minimum :: Ord a => UWord a -> a Source | |
| Foldable ((,) a) | Since: base-4.7.0.0 |
Defined in Data.Foldable Методыfold :: Monoid m => (a, m) -> m Source foldMap :: Monoid m => (a0 -> m) -> (a, a0) -> m Source foldMap' :: Monoid m => (a0 -> m) -> (a, a0) -> m Source foldr :: (a0 -> b -> b) -> b -> (a, a0) -> b Source foldr' :: (a0 -> b -> b) -> b -> (a, a0) -> b Source foldl :: (b -> a0 -> b) -> b -> (a, a0) -> b Source foldl' :: (b -> a0 -> b) -> b -> (a, a0) -> b Source foldr1 :: (a0 -> a0 -> a0) -> (a, a0) -> a0 Source foldl1 :: (a0 -> a0 -> a0) -> (a, a0) -> a0 Source toList :: (a, a0) -> [a0] Source null :: (a, a0) -> Bool Source length :: (a, a0) -> Int Source elem :: Eq a0 => a0 -> (a, a0) -> Bool Source maximum :: Ord a0 => (a, a0) -> a0 Source minimum :: Ord a0 => (a, a0) -> a0 Source | |
| Foldable (Array i) | Since: base-4.8.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => Array i m -> m Source foldMap :: Monoid m => (a -> m) -> Array i a -> m Source foldMap' :: Monoid m => (a -> m) -> Array i a -> m Source foldr :: (a -> b -> b) -> b -> Array i a -> b Source foldr' :: (a -> b -> b) -> b -> Array i a -> b Source foldl :: (b -> a -> b) -> b -> Array i a -> b Source foldl' :: (b -> a -> b) -> b -> Array i a -> b Source foldr1 :: (a -> a -> a) -> Array i a -> a Source foldl1 :: (a -> a -> a) -> Array i a -> a Source toList :: Array i a -> [a] Source null :: Array i a -> Bool Source length :: Array i a -> Int Source elem :: Eq a => a -> Array i a -> Bool Source maximum :: Ord a => Array i a -> a Source minimum :: Ord a => Array i a -> a Source | |
| Foldable (Proxy :: Type -> Type) | С версии: base-4.7.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => Proxy m -> m Source foldMap :: Monoid m => (a -> m) -> Proxy a -> m Source foldMap' :: Monoid m => (a -> m) -> Proxy a -> m Source foldr :: (a -> b -> b) -> b -> Proxy a -> b Source foldr' :: (a -> b -> b) -> b -> Proxy a -> b Source foldl :: (b -> a -> b) -> b -> Proxy a -> b Source foldl' :: (b -> a -> b) -> b -> Proxy a -> b Source foldr1 :: (a -> a -> a) -> Proxy a -> a Source foldl1 :: (a -> a -> a) -> Proxy a -> a Source toList :: Proxy a -> [a] Source null :: Proxy a -> Bool Source length :: Proxy a -> Int Source elem :: Eq a => a -> Proxy a -> Bool Source maximum :: Ord a => Proxy a -> a Source minimum :: Ord a => Proxy a -> a Source | |
| Foldable (Arg a) | С версии: base-4.9.0.0 |
Определено в Data.Semigroup Краткое описание методовfold :: Monoid m => Arg a m -> m Source foldMap :: Monoid m => (a0 -> m) -> Arg a a0 -> m Source foldMap' :: Monoid m => (a0 -> m) -> Arg a a0 -> m Source foldr :: (a0 -> b -> b) -> b -> Arg a a0 -> b Source foldr' :: (a0 -> b -> b) -> b -> Arg a a0 -> b Source foldl :: (b -> a0 -> b) -> b -> Arg a a0 -> b Source foldl' :: (b -> a0 -> b) -> b -> Arg a a0 -> b Source foldr1 :: (a0 -> a0 -> a0) -> Arg a a0 -> a0 Source foldl1 :: (a0 -> a0 -> a0) -> Arg a a0 -> a0 Source toList :: Arg a a0 -> [a0] Source null :: Arg a a0 -> Bool Source length :: Arg a a0 -> Int Source elem :: Eq a0 => a0 -> Arg a a0 -> Bool Source maximum :: Ord a0 => Arg a a0 -> a0 Source minimum :: Ord a0 => Arg a a0 -> a0 Source | |
| Foldable f => Foldable (Rec1 f) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => Rec1 f m -> m Source foldMap :: Monoid m => (a -> m) -> Rec1 f a -> m Source foldMap' :: Monoid m => (a -> m) -> Rec1 f a -> m Source foldr :: (a -> b -> b) -> b -> Rec1 f a -> b Source foldr' :: (a -> b -> b) -> b -> Rec1 f a -> b Source foldl :: (b -> a -> b) -> b -> Rec1 f a -> b Source foldl' :: (b -> a -> b) -> b -> Rec1 f a -> b Source foldr1 :: (a -> a -> a) -> Rec1 f a -> a Source foldl1 :: (a -> a -> a) -> Rec1 f a -> a Source toList :: Rec1 f a -> [a] Source null :: Rec1 f a -> Bool Source length :: Rec1 f a -> Int Source elem :: Eq a => a -> Rec1 f a -> Bool Source maximum :: Ord a => Rec1 f a -> a Source minimum :: Ord a => Rec1 f a -> a Source | |
| Foldable f => Foldable (Alt f) | Since: base-4.12.0.0 |
Defined in Data.Foldable Методыfold :: Monoid m => Alt f m -> m Source foldMap :: Monoid m => (a -> m) -> Alt f a -> m Source foldMap' :: Monoid m => (a -> m) -> Alt f a -> m Source foldr :: (a -> b -> b) -> b -> Alt f a -> b Source foldr' :: (a -> b -> b) -> b -> Alt f a -> b Source foldl :: (b -> a -> b) -> b -> Alt f a -> b Source foldl' :: (b -> a -> b) -> b -> Alt f a -> b Source foldr1 :: (a -> a -> a) -> Alt f a -> a Source foldl1 :: (a -> a -> a) -> Alt f a -> a Source toList :: Alt f a -> [a] Source null :: Alt f a -> Bool Source length :: Alt f a -> Int Source elem :: Eq a => a -> Alt f a -> Bool Source maximum :: Ord a => Alt f a -> a Source minimum :: Ord a => Alt f a -> a Source | |
| Foldable f => Foldable (Ap f) | Since: base-4.12.0.0 |
Defined in Data.Foldable Методыfold :: Monoid m => Ap f m -> m Source foldMap :: Monoid m => (a -> m) -> Ap f a -> m Source foldMap' :: Monoid m => (a -> m) -> Ap f a -> m Source foldr :: (a -> b -> b) -> b -> Ap f a -> b Source foldr' :: (a -> b -> b) -> b -> Ap f a -> b Source foldl :: (b -> a -> b) -> b -> Ap f a -> b Source foldl' :: (b -> a -> b) -> b -> Ap f a -> b Source foldr1 :: (a -> a -> a) -> Ap f a -> a Source foldl1 :: (a -> a -> a) -> Ap f a -> a Source toList :: Ap f a -> [a] Source length :: Ap f a -> Int Source elem :: Eq a => a -> Ap f a -> Bool Source maximum :: Ord a => Ap f a -> a Source minimum :: Ord a => Ap f a -> a Source | |
| Foldable (Const m :: Type -> Type) | Since: base-4.7.0.0 |
Defined in Data.Functor.Const Краткое описание методовfold :: Monoid m0 => Const m m0 -> m0 Source foldMap :: Monoid m0 => (a -> m0) -> Const m a -> m0 Source foldMap' :: Monoid m0 => (a -> m0) -> Const m a -> m0 Source foldr :: (a -> b -> b) -> b -> Const m a -> b Source foldr' :: (a -> b -> b) -> b -> Const m a -> b Source foldl :: (b -> a -> b) -> b -> Const m a -> b Source foldl' :: (b -> a -> b) -> b -> Const m a -> b Source foldr1 :: (a -> a -> a) -> Const m a -> a Source foldl1 :: (a -> a -> a) -> Const m a -> a Source toList :: Const m a -> [a] Source null :: Const m a -> Bool Source length :: Const m a -> Int Source elem :: Eq a => a -> Const m a -> Bool Source maximum :: Ord a => Const m a -> a Source minimum :: Ord a => Const m a -> a Source | |
| Foldable (K1 i c :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => K1 i c m -> m Source foldMap :: Monoid m => (a -> m) -> K1 i c a -> m Source foldMap' :: Monoid m => (a -> m) -> K1 i c a -> m Source foldr :: (a -> b -> b) -> b -> K1 i c a -> b Source foldr' :: (a -> b -> b) -> b -> K1 i c a -> b Source foldl :: (b -> a -> b) -> b -> K1 i c a -> b Source foldl' :: (b -> a -> b) -> b -> K1 i c a -> b Source foldr1 :: (a -> a -> a) -> K1 i c a -> a Source foldl1 :: (a -> a -> a) -> K1 i c a -> a Source toList :: K1 i c a -> [a] Source null :: K1 i c a -> Bool Source length :: K1 i c a -> Int Source elem :: Eq a => a -> K1 i c a -> Bool Source maximum :: Ord a => K1 i c a -> a Source minimum :: Ord a => K1 i c a -> a Source | |
| (Foldable f, Foldable g) => Foldable (f :+: g) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => (f :+: g) m -> m Source foldMap :: Monoid m => (a -> m) -> (f :+: g) a -> m Source foldMap' :: Monoid m => (a -> m) -> (f :+: g) a -> m Source foldr :: (a -> b -> b) -> b -> (f :+: g) a -> b Source foldr' :: (a -> b -> b) -> b -> (f :+: g) a -> b Source foldl :: (b -> a -> b) -> b -> (f :+: g) a -> b Source foldl' :: (b -> a -> b) -> b -> (f :+: g) a -> b Source foldr1 :: (a -> a -> a) -> (f :+: g) a -> a Source foldl1 :: (a -> a -> a) -> (f :+: g) a -> a Source toList :: (f :+: g) a -> [a] Source null :: (f :+: g) a -> Bool Source length :: (f :+: g) a -> Int Source elem :: Eq a => a -> (f :+: g) a -> Bool Source maximum :: Ord a => (f :+: g) a -> a Source minimum :: Ord a => (f :+: g) a -> a Source | |
| (Foldable f, Foldable g) => Foldable (f :*: g) | Since: base-4.9.0.0 |
Определено в Data.Foldable Методыfold :: Monoid m => (f :*: g) m -> m Source foldMap :: Monoid m => (a -> m) -> (f :*: g) a -> m Source foldMap' :: Monoid m => (a -> m) -> (f :*: g) a -> m Source foldr :: (a -> b -> b) -> b -> (f :*: g) a -> b Source foldr' :: (a -> b -> b) -> b -> (f :*: g) a -> b Source foldl :: (b -> a -> b) -> b -> (f :*: g) a -> b Source foldl' :: (b -> a -> b) -> b -> (f :*: g) a -> b Source foldr1 :: (a -> a -> a) -> (f :*: g) a -> a Source foldl1 :: (a -> a -> a) -> (f :*: g) a -> a Source toList :: (f :*: g) a -> [a] Source null :: (f :*: g) a -> Bool Source length :: (f :*: g) a -> Int Source elem :: Eq a => a -> (f :*: g) a -> Bool Source maximum :: Ord a => (f :*: g) a -> a Source minimum :: Ord a => (f :*: g) a -> a Source | |
| (Foldable f, Foldable g) => Foldable (Sum f g) | Since: base-4.9.0.0 |
Определено в Data.Functor.Sum Методыfold :: Monoid m => Sum f g m -> m Source foldMap :: Monoid m => (a -> m) -> Sum f g a -> m Source foldMap' :: Monoid m => (a -> m) -> Sum f g a -> m Source foldr :: (a -> b -> b) -> b -> Sum f g a -> b Source foldr' :: (a -> b -> b) -> b -> Sum f g a -> b Source foldl :: (b -> a -> b) -> b -> Sum f g a -> b Source foldl' :: (b -> a -> b) -> b -> Sum f g a -> b Source foldr1 :: (a -> a -> a) -> Sum f g a -> a Source foldl1 :: (a -> a -> a) -> Sum f g a -> a Source toList :: Sum f g a -> [a] Source null :: Sum f g a -> Bool Source length :: Sum f g a -> Int Source elem :: Eq a => a -> Sum f g a -> Bool Source maximum :: Ord a => Sum f g a -> a Source minimum :: Ord a => Sum f g a -> a Source | |
| (Foldable f, Foldable g) => Foldable (Product f g) | С версии: base-4.9.0.0 |
Определено в Data.Functor.Product Краткое описание методовfold :: Monoid m => Product f g m -> m Source foldMap :: Monoid m => (a -> m) -> Product f g a -> m Source foldMap' :: Monoid m => (a -> m) -> Product f g a -> m Source foldr :: (a -> b -> b) -> b -> Product f g a -> b Source foldr' :: (a -> b -> b) -> b -> Product f g a -> b Source foldl :: (b -> a -> b) -> b -> Product f g a -> b Source foldl' :: (b -> a -> b) -> b -> Product f g a -> b Source foldr1 :: (a -> a -> a) -> Product f g a -> a Source foldl1 :: (a -> a -> a) -> Product f g a -> a Source toList :: Product f g a -> [a] Source null :: Product f g a -> Bool Source length :: Product f g a -> Int Source elem :: Eq a => a -> Product f g a -> Bool Source maximum :: Ord a => Product f g a -> a Source minimum :: Ord a => Product f g a -> a Source | |
| Foldable f => Foldable (M1 i c f) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => M1 i c f m -> m Исходный код foldMap :: Monoid m => (a -> m) -> M1 i c f a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> M1 i c f a -> m Исходный код foldr :: (a -> b -> b) -> b -> M1 i c f a -> b Исходный код foldr' :: (a -> b -> b) -> b -> M1 i c f a -> b Исходный код foldl :: (b -> a -> b) -> b -> M1 i c f a -> b Исходный код foldl' :: (b -> a -> b) -> b -> M1 i c f a -> b Исходный код foldr1 :: (a -> a -> a) -> M1 i c f a -> a Исходный код foldl1 :: (a -> a -> a) -> M1 i c f a -> a Исходный код toList :: M1 i c f a -> [a] Исходный код null :: M1 i c f a -> Bool Исходный код length :: M1 i c f a -> Int Исходный код elem :: Eq a => a -> M1 i c f a -> Bool Исходный код maximum :: Ord a => M1 i c f a -> a Исходный код minimum :: Ord a => M1 i c f a -> a Исходный код sum :: Num a => M1 i c f a -> a Исходный код product :: Num a => M1 i c f a -> a Исходный код | |
| (Foldable f, Foldable g) => Foldable (f :.: g) | С версии: base-4.9.0.0 |
Определено в Data.Foldable Краткое описание методовfold :: Monoid m => (f :.: g) m -> m Исходный код foldMap :: Monoid m => (a -> m) -> (f :.: g) a -> m Исходный код foldMap' :: Monoid m => (a -> m) -> (f :.: g) a -> m Исходный код foldr :: (a -> b -> b) -> b -> (f :.: g) a -> b Исходный код foldr' :: (a -> b -> b) -> b -> (f :.: g) a -> b Исходный код foldl :: (b -> a -> b) -> b -> (f :.: g) a -> b Исходный код foldl' :: (b -> a -> b) -> b -> (f :.: g) a -> b Исходный код foldr1 :: (a -> a -> a) -> (f :.: g) a -> a Исходный код foldl1 :: (a -> a -> a) -> (f :.: g) a -> a Исходный код toList :: (f :.: g) a -> [a] Исходный код null :: (f :.: g) a -> Bool Исходный код length :: (f :.: g) a -> Int Исходный код elem :: Eq a => a -> (f :.: g) a -> Bool Исходный код maximum :: Ord a => (f :.: g) a -> a Исходный код minimum :: Ord a => (f :.: g) a -> a Исходный код sum :: Num a => (f :.: g) a -> a Исходный код product :: Num a => (f :.: g) a -> a Исходный код | |
| (Foldable f, Foldable g) => Foldable (Compose f g) | Since: base-4.9.0.0 |
Определено в Data.Functor.Compose Краткое описание методовfold :: Monoid m => Compose f g m -> m Source foldMap :: Monoid m => (a -> m) -> Compose f g a -> m Source foldMap' :: Monoid m => (a -> m) -> Compose f g a -> m Source foldr :: (a -> b -> b) -> b -> Compose f g a -> b Source foldr' :: (a -> b -> b) -> b -> Compose f g a -> b Source foldl :: (b -> a -> b) -> b -> Compose f g a -> b Source foldl' :: (b -> a -> b) -> b -> Compose f g a -> b Source foldr1 :: (a -> a -> a) -> Compose f g a -> a Source foldl1 :: (a -> a -> a) -> Compose f g a -> a Source toList :: Compose f g a -> [a] Source null :: Compose f g a -> Bool Source length :: Compose f g a -> Int Source elem :: Eq a => a -> Compose f g a -> Bool Source maximum :: Ord a => Compose f g a -> a Source minimum :: Ord a => Compose f g a -> a Source | |
class (Functor t, Foldable t) => Traversable t where Source
Функторы, представляющие структуры данных, которые можно траверсировать слева направо.
Определение traverse должно удовлетворять следующим законам:
- Натуральность
-
t . traverse f = traverse (t . f)для каждого аппликативного преобразованияt - Идентичность
traverse Identity = Identity- Композиция
traverse (Compose . fmap g . f) = Compose . fmap (traverse g) . traverse f
Определение sequenceA должно удовлетворять следующим законам:
- Натуральность
-
t . sequenceA = sequenceA . fmap tдля каждого аппликативного преобразованияt - Идентичность
sequenceA . fmap Identity = Identity- Композиция
sequenceA . fmap Compose = Compose . fmap sequenceA . sequenceA
где аппликативное преобразование — это функция
t :: (Applicative f, Applicative g) => f a -> g a
сохраняющая операции Applicative, т.е.
t (pure x) = pure x t (f <*> x) = t f <*> t x
и тождественный функтор Identity и функторы композиции Compose взяты из Data.Functor.Identity и Data.Functor.Compose.
Следствием закона натуральности является закон чистоты для traverse
traverse pure = pure
(Закон натуральности вытекает из параметричности, а значит, и закон чистоты [1, p15]).
Экземпляры аналогичны Functor, например, для данного типа данных
data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
подходящим экземпляром будет
instance Traversable Tree where traverse f Empty = pure Empty traverse f (Leaf x) = Leaf <$> f x traverse f (Node l k r) = Node <$> traverse f l <*> f k <*> traverse f r
Это подходит даже для абстрактных типов, поскольку законы для <*> подразумевают форму ассоциативности.
Экземпляры суперклассов должны удовлетворять следующим условиям:
- В экземпляре
Functor,fmapдолжен быть эквивалентен траверсалу с тождественным аппликативным функтором (fmapDefault). - В экземпляре
Foldable,foldMapдолжен быть эквивалентен траверсалу с константным аппликативным функтором (foldMapDefault).
Ссылки: [1] The Essence of the Iterator Pattern, Jeremy Gibbons and Bruno C. d. S. Oliveira
Краткое описание методов
traverse :: Applicative f => (a -> f b) -> t a -> f (t b) Source
Сопоставляет каждый элемент структуры с действием, вычисляет эти действия слева направо и собирает результаты. Для версии, которая игнорирует результаты, см. traverse_.
sequenceA :: Applicative f => t (f a) -> f (t a) Source
Вычисляет каждое действие в структуре слева направо и собирает результаты. Для версии, которая игнорирует результаты, см. sequenceA_.
mapM :: Monad m => (a -> m b) -> t a -> m (t b) Source
Сопоставляет каждый элемент структуры с монадным действием, вычисляет эти действия слева направо и собирает результаты. Для версии, которая игнорирует результаты, см. mapM_.
sequence :: Monad m => t (m a) -> m (t a) Source
Вычисляет каждое монадное действие в структуре слева направо и собирает результаты. Для версии, которая игнорирует результаты, см. sequence_.
Вхождения
| Traversable [] | Since: base-2.1 |
Определено в Data.Traversable | |
| Traversable Maybe | Since: base-2.1 |
Определено в Data.Traversable | |
| Traversable Par1 | Since: base-4.9.0.0 |
| Traversable NonEmpty | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| Traversable Down | Since: base-4.12.0.0 |
| Traversable Product | Since: base-4.8.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Product a -> f (Product b) Исходный код sequenceA :: Applicative f => Product (f a) -> f (Product a) Исходный код mapM :: Monad m => (a -> m b) -> Product a -> m (Product b) Исходный код sequence :: Monad m => Product (m a) -> m (Product a) Исходный код | |
| Traversable Sum | С версии: base-4.8.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Sum a -> f (Sum b) Исходный код sequenceA :: Applicative f => Sum (f a) -> f (Sum a) Исходный код mapM :: Monad m => (a -> m b) -> Sum a -> m (Sum b) Исходный код sequence :: Monad m => Sum (m a) -> m (Sum a) Исходный код | |
| Traversable Dual | С версии: base-4.8.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Dual a -> f (Dual b) Исходный код sequenceA :: Applicative f => Dual (f a) -> f (Dual a) Исходный код mapM :: Monad m => (a -> m b) -> Dual a -> m (Dual b) Исходный код sequence :: Monad m => Dual (m a) -> m (Dual a) Исходный код | |
| Traversable Last | С версии: base-4.8.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Last a -> f (Last b) Исходный код sequenceA :: Applicative f => Last (f a) -> f (Last a) Исходный код mapM :: Monad m => (a -> m b) -> Last a -> m (Last b) Исходный код sequence :: Monad m => Last (m a) -> m (Last a) Исходный код | |
| Traversable First | С версии: base-4.8.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> First a -> f (First b) Исходный код sequenceA :: Applicative f => First (f a) -> f (First a) Исходный код mapM :: Monad m => (a -> m b) -> First a -> m (First b) Исходный код sequence :: Monad m => First (m a) -> m (First a) Исходный код | |
| Traversable Identity | С версии: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Identity a -> f (Identity b) Source sequenceA :: Applicative f => Identity (f a) -> f (Identity a) Source mapM :: Monad m => (a -> m b) -> Identity a -> m (Identity b) Source sequence :: Monad m => Identity (m a) -> m (Identity a) Source | |
| Traversable ZipList | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| Traversable Option | Since: base-4.9.0.0 |
Определено в Data.Semigroup | |
| Traversable Last | Since: base-4.9.0.0 |
Определено в Data.Semigroup | |
| Traversable First | Since: base-4.9.0.0 |
Определено в Data.Semigroup | |
| Traversable Max | Since: base-4.9.0.0 |
Определено в Data.Semigroup Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Max a -> f (Max b) Исходный код sequenceA :: Applicative f => Max (f a) -> f (Max a) Исходный код mapM :: Monad m => (a -> m b) -> Max a -> m (Max b) Исходный код sequence :: Monad m => Max (m a) -> m (Max a) Исходный код | |
| Traversable Min | Since: base-4.9.0.0 |
Определено в Data.Semigroup Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Min a -> f (Min b) Исходный код sequenceA :: Applicative f => Min (f a) -> f (Min a) Исходный код mapM :: Monad m => (a -> m b) -> Min a -> m (Min b) Исходный код sequence :: Monad m => Min (m a) -> m (Min a) Исходный код | |
| Traversable Complex | Since: base-4.9.0.0 |
Определено в Data.Complex Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Complex a -> f (Complex b) Исходный код sequenceA :: Applicative f => Complex (f a) -> f (Complex a) Исходный код mapM :: Monad m => (a -> m b) -> Complex a -> m (Complex b) Исходный код sequence :: Monad m => Complex (m a) -> m (Complex a) Исходный код | |
| Traversable (Either a) | Since: base-4.7.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a0 -> f b) -> Either a a0 -> f (Either a b) Исходный код sequenceA :: Applicative f => Either a (f a0) -> f (Either a a0) Исходный код mapM :: Monad m => (a0 -> m b) -> Either a a0 -> m (Either a b) Исходный код sequence :: Monad m => Either a (m a0) -> m (Either a a0) Исходный код | |
| Traversable (V1 :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> V1 a -> f (V1 b) Исходный код sequenceA :: Applicative f => V1 (f a) -> f (V1 a) Исходный код mapM :: Monad m => (a -> m b) -> V1 a -> m (V1 b) Исходный код sequence :: Monad m => V1 (m a) -> m (V1 a) Исходный код | |
| Traversable (U1 :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> U1 a -> f (U1 b) Исходный код sequenceA :: Applicative f => U1 (f a) -> f (U1 a) Исходный код mapM :: Monad m => (a -> m b) -> U1 a -> m (U1 b) Исходный код sequence :: Monad m => U1 (m a) -> m (U1 a) Исходный код | |
| Traversable (UAddr :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> UAddr a -> f (UAddr b) Исходный код sequenceA :: Applicative f => UAddr (f a) -> f (UAddr a) Исходный код mapM :: Monad m => (a -> m b) -> UAddr a -> m (UAddr b) Исходный код sequence :: Monad m => UAddr (m a) -> m (UAddr a) Исходный код | |
| Traversable (UChar :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> UChar a -> f (UChar b) Исходный код sequenceA :: Applicative f => UChar (f a) -> f (UChar a) Исходный код mapM :: Monad m => (a -> m b) -> UChar a -> m (UChar b) Исходный код sequence :: Monad m => UChar (m a) -> m (UChar a) Исходный код | |
| Traversable (UDouble :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> UDouble a -> f (UDouble b) Исходный код sequenceA :: Applicative f => UDouble (f a) -> f (UDouble a) Исходный код mapM :: Monad m => (a -> m b) -> UDouble a -> m (UDouble b) Исходный код sequence :: Monad m => UDouble (m a) -> m (UDouble a) Исходный код | |
| Traversable (UFloat :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> UFloat a -> f (UFloat b) Исходный код sequenceA :: Applicative f => UFloat (f a) -> f (UFloat a) Исходный код mapM :: Monad m => (a -> m b) -> UFloat a -> m (UFloat b) Исходный код sequence :: Monad m => UFloat (m a) -> m (UFloat a) Исходный код | |
| Traversable (UInt :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> UInt a -> f (UInt b) Исходный код sequenceA :: Applicative f => UInt (f a) -> f (UInt a) Исходный код mapM :: Monad m => (a -> m b) -> UInt a -> m (UInt b) Исходный код sequence :: Monad m => UInt (m a) -> m (UInt a) Исходный код | |
| Traversable (UWord :: Type -> Type) | С версии: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> UWord a -> f (UWord b) Исходный код sequenceA :: Applicative f => UWord (f a) -> f (UWord a) Исходный код mapM :: Monad m => (a -> m b) -> UWord a -> m (UWord b) Исходный код sequence :: Monad m => UWord (m a) -> m (UWord a) Исходный код | |
| Traversable ((,) a) | С версии: base-4.7.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a0 -> f b) -> (a, a0) -> f (a, b) Исходный код sequenceA :: Applicative f => (a, f a0) -> f (a, a0) Исходный код mapM :: Monad m => (a0 -> m b) -> (a, a0) -> m (a, b) Исходный код sequence :: Monad m => (a, m a0) -> m (a, a0) Исходный код | |
| Ix i => Traversable (Array i) | С версии: base-2.1 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Array i a -> f (Array i b) Исходный код sequenceA :: Applicative f => Array i (f a) -> f (Array i a) Исходный код mapM :: Monad m => (a -> m b) -> Array i a -> m (Array i b) Исходный код sequence :: Monad m => Array i (m a) -> m (Array i a) Исходный код | |
| Traversable (Proxy :: Type -> Type) | С версии: base-4.7.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Proxy a -> f (Proxy b) Исходный код sequenceA :: Applicative f => Proxy (f a) -> f (Proxy a) Исходный код mapM :: Monad m => (a -> m b) -> Proxy a -> m (Proxy b) Исходный код sequence :: Monad m => Proxy (m a) -> m (Proxy a) Исходный код | |
| Traversable (Arg a) | С версии: base-4.9.0.0 |
Определено в Data.Semigroup | |
| Traversable f => Traversable (Rec1 f) | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| Traversable f => Traversable (Alt f) | Since: base-4.12.0.0 |
Определено в Data.Traversable | |
| Traversable f => Traversable (Ap f) | Since: base-4.12.0.0 |
Определено в Data.Traversable | |
| Traversable (Const m :: Type -> Type) | Since: base-4.7.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f => (a -> f b) -> Const m a -> f (Const m b) Source sequenceA :: Applicative f => Const m (f a) -> f (Const m a) Source mapM :: Monad m0 => (a -> m0 b) -> Const m a -> m0 (Const m b) Source sequence :: Monad m0 => Const m (m0 a) -> m0 (Const m a) Source | |
| Traversable (K1 i c :: Type -> Type) | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| (Traversable f, Traversable g) => Traversable (f :+: g) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f0 => (a -> f0 b) -> (f :+: g) a -> f0 ((f :+: g) b) Source sequenceA :: Applicative f0 => (f :+: g) (f0 a) -> f0 ((f :+: g) a) Source mapM :: Monad m => (a -> m b) -> (f :+: g) a -> m ((f :+: g) b) Source sequence :: Monad m => (f :+: g) (m a) -> m ((f :+: g) a) Source | |
| (Traversable f, Traversable g) => Traversable (f :*: g) | Since: base-4.9.0.0 |
Определено в Data.Traversable Краткое описание методовtraverse :: Applicative f0 => (a -> f0 b) -> (f :*: g) a -> f0 ((f :*: g) b) Source sequenceA :: Applicative f0 => (f :*: g) (f0 a) -> f0 ((f :*: g) a) Source mapM :: Monad m => (a -> m b) -> (f :*: g) a -> m ((f :*: g) b) Source sequence :: Monad m => (f :*: g) (m a) -> m ((f :*: g) a) Source | |
| (Traversable f, Traversable g) => Traversable (Sum f g) | Since: base-4.9.0.0 |
Определено в Data.Functor.Sum Краткое описание методовtraverse :: Applicative f0 => (a -> f0 b) -> Sum f g a -> f0 (Sum f g b) Source sequenceA :: Applicative f0 => Sum f g (f0 a) -> f0 (Sum f g a) Source mapM :: Monad m => (a -> m b) -> Sum f g a -> m (Sum f g b) Source sequence :: Monad m => Sum f g (m a) -> m (Sum f g a) Source | |
| (Traversable f, Traversable g) => Traversable (Product f g) | Since: base-4.9.0.0 |
Определено в Data.Functor.Product Краткое описание методовtraverse :: Applicative f0 => (a -> f0 b) -> Product f g a -> f0 (Product f g b) Source sequenceA :: Applicative f0 => Product f g (f0 a) -> f0 (Product f g a) Source mapM :: Monad m => (a -> m b) -> Product f g a -> m (Product f g b) Source sequence :: Monad m => Product f g (m a) -> m (Product f g a) Source | |
| Traversable f => Traversable (M1 i c f) | Since: base-4.9.0.0 |
Определено в Data.Traversable | |
| (Traversable f, Traversable g) => Traversable (f :.: g) | Since: base-4.9.0.0 |
Определено в Data.Traversable Методыtraverse :: Applicative f0 => (a -> f0 b) -> (f :.: g) a -> f0 ((f :.: g) b) Source sequenceA :: Applicative f0 => (f :.: g) (f0 a) -> f0 ((f :.: g) a) Source mapM :: Monad m => (a -> m b) -> (f :.: g) a -> m ((f :.: g) b) Source sequence :: Monad m => (f :.: g) (m a) -> m ((f :.: g) a) Source | |
| (Traversable f, Traversable g) => Traversable (Compose f g) | Since: base-4.9.0.0 |
Определено в Data.Functor.Compose Методыtraverse :: Applicative f0 => (a -> f0 b) -> Compose f g a -> f0 (Compose f g b) Source sequenceA :: Applicative f0 => Compose f g (f0 a) -> f0 (Compose f g a) Source mapM :: Monad m => (a -> m b) -> Compose f g a -> m (Compose f g b) Source sequence :: Monad m => Compose f g (m a) -> m (Compose f g a) Source | |
Вспомогательные функции
Функция идентичности.
id x = x
const x является унарной функцией, которая вычисляется в x для всех входных данных.
>>> const 42 "hello" 42
>>> map (const 42) [0..3] [42,42,42,42]
(.) :: (b -> c) -> (a -> b) -> a -> c infixr 9 Source
Композиция функций.
flip :: (a -> b -> c) -> b -> a -> c Source
flip f принимает свои (первые) два аргумента в обратном порядке по сравнению с f.
>>> flip (++) "hello" "world" "worldhello"
($) :: forall r a (b :: TYPE r). (a -> b) -> a -> b infixr 0 Source
Оператор применения. Этот оператор избыточен, поскольку обычное применение (f x) означает то же самое, что и (f $ x). Однако, $ имеет низкий, правоассоциативный приоритет связывания, поэтому он иногда позволяет опускать круглые скобки; например:
f $ g $ h x = f (g (h x))
Он также полезен в ситуациях высшего порядка, таких как map ($ 0) xs или zipWith ($) fs xs.
Обратите внимание, что ($) является легковесно-полиморфным по своему результирующему типу, так что foo $ True, где foo :: Bool -> Int# имеет правильную типизацию.
until :: (a -> Bool) -> (a -> a) -> a -> a Source
until p f возвращает результат применения f до тех пор, пока не будет выполнено условие p.
asTypeOf :: a -> a -> a Source
asTypeOf является версией const с ограничением по типу. Обычно используется как инфиксный оператор, и его типизация принуждает его первый аргумент (который обычно перегружен) иметь тот же тип, что и второй.
error :: forall (r :: RuntimeRep). forall (a :: TYPE r). HasCallStack => [Char] -> a Source
error останавливает выполнение и отображает сообщение об ошибке.
errorWithoutStackTrace :: forall (r :: RuntimeRep). forall (a :: TYPE r). [Char] -> a Source
Вариант error, который не создает трассировку стека.
Since: base-4.9.0.0
undefined :: forall (r :: RuntimeRep). forall (a :: TYPE r). HasCallStack => a Source
Специальный случай error. Ожидается, что компиляторы распознают это и вставят сообщения об ошибках, которые более соответствуют контексту, в котором появляется undefined.
seq :: forall (r :: RuntimeRep) a (b :: TYPE r). a -> b -> b infixr 0 Source
Значение seq a b равно bottom, если a равно bottom, и в противном случае равно b. Другими словами, оно вычисляет первый аргумент a до слабой головной нормальной формы (WHNF). seq обычно используется для повышения производительности за счет избегания ненужной ленивости.
Примечание о порядке вычислений: выражение seq a b не гарантирует, что a будет вычислено до b. Единственная гарантия, предоставляемая seq, заключается в том, что как a, так и b будут вычислены до того, как seq вернет значение. В частности, это означает, что b может быть вычислено до a. Если вам необходимо гарантировать определенный порядок вычислений, вы должны использовать функцию pseq из пакета "parallel".
($!) :: forall r a (b :: TYPE r). (a -> b) -> a -> b infixr 0 Source
Оператор строгого (call-by-value) применения. Он принимает функцию и аргумент, вычисляет аргумент до слабой головной нормальной формы (WHNF), а затем вызывает функцию с этим значением.
Операции со списками
map :: (a -> b) -> [a] -> [b] Source
\(\mathcal{O}(n)\). map f xs — это список, полученный путем применения f к каждому элементу xs, то есть
map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn] map f [x1, x2, ...] == [f x1, f x2, ...]
>>> map (+1) [1, 2, 3]
(++) :: [a] -> [a] -> [a] infixr 5 Source
Добавление двух списков, то есть
[x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn] [x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...]
Если первый список не конечен, результатом является первый список.
filter :: (a -> Bool) -> [a] -> [a] Source
\(\mathcal{O}(n)\). filter, применённая к предикату и списку, возвращает список тех элементов, которые удовлетворяют предикату; то есть
filter p xs = [ x | x <- xs, p x]
>>> filter odd [1, 2, 3] [1,3]
\(\mathcal{O}(1)\). Извлечение первого элемента списка, который должен быть непустым.
\(\mathcal{O}(n)\). Извлечение последнего элемента списка, который должен быть конечным и непустым.
\(\mathcal{O}(1)\). Извлечение элементов после головного элемента списка, который должен быть непустым.
\(\mathcal{O}(n)\). Возвращает все элементы списка, кроме последнего. Список должен быть непустым.
(!!) :: [a] -> Int -> a infixl 9 Source
Оператор индекса (индексации) списка, начиная с 0. Это частный случай более общего genericIndex, который принимает индекс любого целочисленного типа.
null :: Foldable t => t a -> Bool Source
Проверяет, пуста ли структура. Реализация по умолчанию оптимизирована для структур, подобных спискам cons, поскольку нет общего способа сделать лучше.
Since: base-4.8.0.0
length :: Foldable t => t a -> Int Source
Возвращает размер/длину конечной структуры как Int. Реализация по умолчанию оптимизирована для структур, подобных спискам cons, поскольку нет общего способа сделать лучше.
Since: base-4.8.0.0
reverse xs возвращает элементы xs в обратном порядке. xs должен быть конечным.
Специальные свёртки
and :: Foldable t => t Bool -> Bool Source
and возвращает конъюнкцию контейнера булевых значений. Для того чтобы результат был True, контейнер должен быть конечным; False, однако, получается из значения False, находящегося на конечном расстоянии от левого конца.
or :: Foldable t => t Bool -> Bool Source
or возвращает дизъюнкцию контейнера булевых значений. Для того чтобы результат был False, контейнер должен быть конечным; True, однако, получается из значения True, находящегося на конечном расстоянии от левого конца.
any :: Foldable t => (a -> Bool) -> t a -> Bool Source
Определяет, удовлетворяет ли какой-либо элемент структуры предикату.
all :: Foldable t => (a -> Bool) -> t a -> Bool Source
Определяет, удовлетворяют ли все элементы структуры предикату.
concat :: Foldable t => t [a] -> [a] Source
Конкатенация всех элементов контейнера списков.
concatMap :: Foldable t => (a -> [b]) -> t a -> [b] Source
Применяет функцию ко всем элементам контейнера и конкатенирует результирующие списки.
Построение списков
Сканирования
scanl :: (b -> a -> b) -> b -> [a] -> [b] Source
\(\mathcal{O}(n)\). 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.
scanl1 :: (a -> a -> a) -> [a] -> [a] Source
\(\mathcal{O}(n)\). scanl1 — это вариант scanl, у которого нет аргумента начального значения:
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
scanr :: (a -> b -> b) -> b -> [a] -> [b] Source
\(\mathcal{O}(n)\). scanr — это дуальное справа налево от scanl. Обратите внимание, что
head (scanr f z xs) == foldr f z xs.
scanr1 :: (a -> a -> a) -> [a] -> [a] Source
\(\mathcal{O}(n)\). scanr1 является вариантом scanr, который не имеет аргумента начального значения.
Бесконечные списки
iterate :: (a -> a) -> a -> [a] Source
iterate f x возвращает бесконечный список повторных применений f к x:
iterate f x == [x, f x, f (f x), ...]
Обратите внимание, что iterate является ленивым, что может привести к накоплению танков, если потребитель не принуждает к каждой итерации. См. iterate' для строгого варианта этой функции.
repeat x является бесконечным списком, где x - значение каждого элемента.
replicate :: Int -> a -> [a] Source
replicate n x представляет собой список длиной n, где x - значение каждого элемента. Это пример более общего genericReplicate, в котором n может быть любого целочисленного типа.
cycle связывает конечный список в циклический, или, что эквивалентно, бесконечное повторение исходного списка. Это тождество для бесконечных списков.
Подсписки
take :: Int -> [a] -> [a] Source
take n, примененный к списку xs, возвращает префикс xs длиной n или сам xs, если n > length xs:
take 5 "Hello World!" == "Hello" take 3 [1,2,3,4,5] == [1,2,3] take 3 [1,2] == [1,2] take 3 [] == [] take (-1) [1,2] == [] take 0 [1,2] == []
Это пример более общего genericTake, в котором n может быть любого целочисленного типа.
drop :: Int -> [a] -> [a] Source
drop n xs возвращает суффикс xs после первых n элементов или [], если n > length xs:
drop 6 "Hello World!" == "World!" drop 3 [1,2,3,4,5] == [4,5] drop 3 [1,2] == [] drop 3 [] == [] drop (-1) [1,2] == [1,2] drop 0 [1,2] == [1,2]
Это пример более общего genericDrop, в котором n может быть любого целочисленного типа.
takeWhile :: (a -> Bool) -> [a] -> [a] Source
takeWhile, примененный к предикату p и списку xs, возвращает самый длинный префикс (возможно, пустой) xs элементов, которые удовлетворяют p:
takeWhile (< 3) [1,2,3,4,1,2,3,4] == [1,2] takeWhile (< 9) [1,2,3] == [1,2,3] takeWhile (< 0) [1,2,3] == []
dropWhile :: (a -> Bool) -> [a] -> [a] Source
dropWhile p xs возвращает оставшийся суффикс после takeWhile p xs:
dropWhile (< 3) [1,2,3,4,5,1,2,3] == [3,4,5,1,2,3] dropWhile (< 9) [1,2,3] == [] dropWhile (< 0) [1,2,3] == [1,2,3]
span :: (a -> Bool) -> [a] -> ([a], [a]) Source
span, примененный к предикату p и списку xs, возвращает кортеж, где первый элемент - самый длинный префикс (возможно, пустой) xs элементов, которые удовлетворяют p, а второй элемент - остаток списка:
span (< 3) [1,2,3,4,1,2,3,4] == ([1,2],[3,4,1,2,3,4]) span (< 9) [1,2,3] == ([1,2,3],[]) span (< 0) [1,2,3] == ([],[1,2,3])
span p xs эквивалентно (takeWhile p xs, dropWhile p xs)
break :: (a -> Bool) -> [a] -> ([a], [a]) Source
break, примененный к предикату p и списку xs, возвращает кортеж, где первый элемент - самый длинный префикс (возможно, пустой) xs элементов, которые не удовлетворяют p, а второй элемент - остаток списка:
break (> 3) [1,2,3,4,1,2,3,4] == ([1,2,3],[4,1,2,3,4]) break (< 9) [1,2,3] == ([],[1,2,3]) break (> 9) [1,2,3] == ([1,2,3],[])
break p эквивалентно span (not . p).
splitAt :: Int -> [a] -> ([a], [a]) Source
splitAt n xs возвращает кортеж, где первый элемент - xs префикс длиной n, а второй элемент - остаток списка:
splitAt 6 "Hello World!" == ("Hello ","World!")
splitAt 3 [1,2,3,4,5] == ([1,2,3],[4,5])
splitAt 1 [1,2,3] == ([1],[2,3])
splitAt 3 [1,2,3] == ([1,2,3],[])
splitAt 4 [1,2,3] == ([1,2,3],[])
splitAt 0 [1,2,3] == ([],[1,2,3])
splitAt (-1) [1,2,3] == ([],[1,2,3])
Это эквивалентно (take n xs, drop n xs), когда n не _|_ (splitAt _|_ xs = _|_). splitAt является примером более общего genericSplitAt, в котором n может быть любого целочисленного типа.
Поиск в списках
notElem :: (Foldable t, Eq a) => a -> t a -> Bool infix 4 Source
notElem является отрицанием elem.
lookup :: Eq a => a -> [(a, b)] -> Maybe b Source
\(\mathcal{O}(n)\). lookup key assocs ищет ключ в ассоциативном списке.
>>> lookup 2 [(1, "first"), (2, "second"), (3, "third")] Just "second"
Объединение и разделение списков
zip :: [a] -> [b] -> [(a, b)] Source
\(\mathcal{O}(\min(m,n))\). zip принимает два списка и возвращает список соответствующих пар.
zip [1, 2] ['a', 'b'] = [(1, 'a'), (2, 'b')]
Если один входной список короткий, лишние элементы более длинного списка отбрасываются:
zip [1] ['a', 'b'] = [(1, 'a')] zip [1, 2] ['a'] = [(1, 'a')]
zip является право-ленивым:
zip [] _|_ = [] zip _|_ [] = _|_
zip способен к слиянию списков, но он ограничен своим первым аргументом списка и его результирующим списком.
zip3 :: [a] -> [b] -> [c] -> [(a, b, c)] Source
zip3 принимает три списка и возвращает список троек, аналогично zip. Он способен к слиянию списков, но он ограничен своим первым аргументом списка и его результирующим списком.
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] Source
\(\mathcal{O}(\min(m,n))\). zipWith обобщает zip, объединяя с функцией, заданной в качестве первого аргумента, а не функцией туплирования. Например, zipWith (+) применяется к двум спискам для получения списка соответствующих сумм:
>>> zipWith (+) [1, 2, 3] [4, 5, 6] [5,7,9]
zipWith является право-ленивым:
zipWith f [] _|_ = []
zipWith способен к слиянию списков, но он ограничен своим первым аргументом списка и его результирующим списком.
zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d] Source
Функция zipWith3 принимает функцию, которая объединяет три элемента, а также три списка и возвращает список их покомпонентного объединения, аналогично zipWith. Он способен к слиянию списков, но он ограничен своим первым аргументом списка и его результирующим списком.
unzip :: [(a, b)] -> ([a], [b]) Source
unzip преобразует список пар в список первых компонентов и список вторых компонентов.
unzip3 :: [(a, b, c)] -> ([a], [b], [c]) Source
Функция unzip3 принимает список троек и возвращает три списка, аналогично unzip.
Функции над строками
lines разбивает строку на список строк по символам новой строки. Результирующие строки не содержат символов новой строки.
Обратите внимание, что после разделения строки по символам новой строки, последняя часть строки считается строкой, даже если она не заканчивается символом новой строки. Например,
>>> lines "" []
>>> lines "\n" [""]
>>> lines "one" ["one"]
>>> lines "one\n" ["one"]
>>> lines "one\n\n" ["one",""]
>>> lines "one\ntwo" ["one","two"]
>>> lines "one\ntwo\n" ["one","two"]
Таким образом, lines s содержит не менее элементов, чем символов новой строки в s.
words :: String -> [String] Source
words разбивает строку на список слов, которые разделяются пробелами.
>>> words "Lorem ipsum\ndolor" ["Lorem","ipsum","dolor"]
unlines :: [String] -> String Source
unlines является обратной операцией к lines. Она соединяет строки, после добавления завершающего символа новой строки к каждой.
>>> unlines ["Hello", "World", "!"] "Hello\nWorld\n!\n"
unwords :: [String] -> String Source
unwords является обратной операцией к words. Она соединяет слова с разделяющими пробелами.
>>> unwords ["Lorem", "ipsum", "dolor"] "Lorem ipsum dolor"
Преобразование в строку и из строки
Преобразование в String
type ShowS = String -> String Source
Функции shows возвращают функцию, которая добавляет результирующий String к существующему String. Это позволяет выполнять конкатенацию результатов за постоянное время с использованием композиции функций.
Преобразование значений в читаемые String.
Производные экземпляры Show обладают следующими свойствами, которые совместимы с производными экземплярами Read:
- Результат
showявляется синтаксически корректным выражением Haskell, содержащим только константы, с учетом деклараций фиксации, действующих в точке объявления типа. Он содержит только имена конструкторов, определенные в типе данных, скобки и пробелы. Когда используются поля конструктора с метками, используются также фигурные скобки, запятые, имена полей и знаки равенства. - Если конструктор определен как инфиксный оператор, то
showsPrecбудет генерировать инфиксные применения конструктора. - представление будет заключено в скобки, если приоритет конструктора верхнего уровня в
xменьше, чемd(ассоциативность игнорируется). Таким образом, еслиdравен0, то результат никогда не окружается скобками; еслиdравен11, он всегда окружается скобками, если только это не атомарное выражение. - Если конструктор определен с использованием синтаксиса записей, то
showбудет генерировать форму в синтаксисе записей, с полями, указанными в том же порядке, что и в исходном объявлении.
Например, учитывая объявления
infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a
производный экземпляр Show эквивалентен
instance (Show a) => Show (Tree a) where
showsPrec d (Leaf m) = showParen (d > app_prec) $
showString "Leaf " . showsPrec (app_prec+1) m
where app_prec = 10
showsPrec d (u :^: v) = showParen (d > up_prec) $
showsPrec (up_prec+1) u .
showString " :^: " .
showsPrec (up_prec+1) v
where up_prec = 5
Обратите внимание, что правоассоциативность :^: игнорируется. Например,
-
show (Leaf 1 :^: Leaf 2 :^: Leaf 3)производит строку"Leaf 1 :^: (Leaf 2 :^: Leaf 3)".
Методы
Аргументы
| :: Int | приоритет оператора окружающего контекста (число от |
| -> a | значение, которое должно быть преобразовано в |
| -> ShowS |
Преобразует значение в читаемую String.
showsPrec должно удовлетворять закону
showsPrec d x r ++ s == showsPrec d x (r ++ s)
Производные экземпляры Read и Show удовлетворяют следующему:
То есть, readsPrec разбирает строку, сгенерированную showsPrec, и возвращает значение, с которого началось showsPrec.
Специализированный вариант showsPrec, использующий контекст приоритета ноль и возвращающий обычную String.
showList :: [a] -> ShowS Source
Метод showList предоставляется для того, чтобы программист мог указать специализированный способ отображения списков значений. Например, это используется предопределенным экземпляром Show типа Char, где значения типа String должны отображаться в двойных кавычках, а не в квадратных скобках.
| Show RuntimeRep | Since: base-4.11.0.0 |
Определено в GHC.Show Краткое описание методовshowsPrec :: Int -> RuntimeRep -> ShowS Source show :: RuntimeRep -> String Source showList :: [RuntimeRep] -> ShowS Source | |
| Show VecCount | Since: base-4.11.0.0 |
| Show VecElem | Since: base-4.11.0.0 |
| Show CallStack | Since: base-4.9.0.0 |
| Show SomeTypeRep | Since: base-4.10.0.0 |
Определено в Data.Typeable.Internal Краткое описание методовshowsPrec :: Int -> SomeTypeRep -> ShowS Source show :: SomeTypeRep -> String Source showList :: [SomeTypeRep] -> ShowS Source | |
| Show () | Since: base-2.1 |
| Show TyCon | Since: base-2.1 |
| Show Module | Since: base-4.9.0.0 |
| Show TrName | Since: base-4.9.0.0 |
| Show KindRep | |
| Show TypeLitSort | Since: base-4.11.0.0 |
Определено в GHC.Show МетодыshowsPrec :: Int -> TypeLitSort -> ShowS Source show :: TypeLitSort -> String Source showList :: [TypeLitSort] -> ShowS Source | |
| Show SomeException | Since: base-3.0 |
Определено в GHC.Exception.Type МетодыshowsPrec :: Int -> SomeException -> ShowS Source show :: SomeException -> String Source showList :: [SomeException] -> ShowS Source | |
| Show SrcLoc | Since: base-4.9.0.0 |
| Show GeneralCategory | Since: base-2.1 |
Определено в GHC.Unicode МетодыshowsPrec :: Int -> GeneralCategory -> ShowS Source show :: GeneralCategory -> String Source showList :: [GeneralCategory] -> ShowS Source | |
| Show Number | Since: base-4.6.0.0 |
| Show Lexeme | С версии: base-2.1 |
| Show Fingerprint | С версии: base-4.7.0.0 |
Определено в GHC.Fingerprint.Type МетодыshowsPrec :: Int -> Fingerprint -> ShowS Source show :: Fingerprint -> String Source showList :: [Fingerprint] -> ShowS Source | |
| Show IOMode | С версии: base-4.2.0.0 |
| Show IntPtr | |
| Show WordPtr | |
| Show CUIntMax | |
| Show CIntMax | |
| Show CUIntPtr | |
| Show CIntPtr | |
| Show CSUSeconds | |
Определено в Foreign.C.Types МетодыshowsPrec :: Int -> CSUSeconds -> ShowS Source show :: CSUSeconds -> String Source showList :: [CSUSeconds] -> ShowS Source | |
| Show CUSeconds | |
| Show CTime | |
| Show CClock | |
| Show CSigAtomic | |
Определено в Foreign.C.Types МетодыshowsPrec :: Int -> CSigAtomic -> ShowS Source show :: CSigAtomic -> String Source showList :: [CSigAtomic] -> ShowS Source | |
| Show CWchar | |
| Show Any | Since: base-2.1 |
| Show All | Since: base-2.1 |
| Show ArithException | Since: base-4.0.0.0 |
Определено в GHC.Exception.Type МетодыshowsPrec :: Int -> ArithException -> ShowS Source show :: ArithException -> String Source showList :: [ArithException] -> ShowS Source | |
| Show ErrorCall | Since: base-4.0.0.0 |
| Show FileLockingNotSupported | Since: base-4.10.0.0 |
Определено в GHC.IO.Handle.Lock.Common МетодыshowsPrec :: Int -> FileLockingNotSupported -> ShowS Source show :: FileLockingNotSupported -> String Source showList :: [FileLockingNotSupported] -> ShowS Source | |
| Show IOException | Since: base-4.1.0.0 |
Определено в GHC.IO.Exception МетодыshowsPrec :: Int -> IOException -> ShowS Source show :: IOException -> String Source showList :: [IOException] -> ShowS Source | |
| Show MaskingState | Since: base-4.3.0.0 |
Defined in GHC.IO MethodsshowsPrec :: Int -> MaskingState -> ShowS Source show :: MaskingState -> String Source showList :: [MaskingState] -> ShowS Source | |
| Show CodingProgress | Since: base-4.4.0.0 |
Defined in GHC.IO.Encoding.Types MethodsshowsPrec :: Int -> CodingProgress -> ShowS Source show :: CodingProgress -> String Source showList :: [CodingProgress] -> ShowS Source | |
| Show TextEncoding | Since: base-4.3.0.0 |
Defined in GHC.IO.Encoding.Types MethodsshowsPrec :: Int -> TextEncoding -> ShowS Source show :: TextEncoding -> String Source showList :: [TextEncoding] -> ShowS Source | |
| Show SeekMode | Since: base-4.2.0.0 |
| Show NewlineMode | Since: base-4.3.0.0 |
Defined in GHC.IO.Handle.Types MethodsshowsPrec :: Int -> NewlineMode -> ShowS Source show :: NewlineMode -> String Source showList :: [NewlineMode] -> ShowS Source | |
| Show Newline | Since: base-4.3.0.0 |
| Show BufferMode | Since: base-4.2.0.0 |
| Show BlockedIndefinitelyOnSTM | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception МетодыshowsPrec :: Int -> BlockedIndefinitelyOnSTM -> ShowS Source show :: BlockedIndefinitelyOnSTM -> String Source showList :: [BlockedIndefinitelyOnSTM] -> ShowS Source | |
| Show BlockedIndefinitelyOnMVar | Since: base-4.1.0.0 |
Defined in GHC.IO.Exception МетодыshowsPrec :: Int -> BlockedIndefinitelyOnMVar -> ShowS Source show :: BlockedIndefinitelyOnMVar -> String Source showList :: [BlockedIndefinitelyOnMVar] -> ShowS Source | |
| Show CodingFailureMode | Since: base-4.4.0.0 |
Defined in GHC.IO.Encoding.Failure МетодыshowsPrec :: Int -> CodingFailureMode -> ShowS Source show :: CodingFailureMode -> String Source showList :: [CodingFailureMode] -> ShowS Source | |
| Show Fd | |
| Show CNfds | |
| Show CSocklen | |
| Show CTimer | |
| Show ThreadStatus | Since: base-4.3.0.0 |
Определено в GHC.Conc.Sync МетодыshowsPrec :: Int -> ThreadStatus -> ShowS Source show :: ThreadStatus -> String Source showList :: [ThreadStatus] -> ShowS Source | |
| Show BlockReason | Since: base-4.3.0.0 |
Определено в GHC.Conc.Sync МетодыshowsPrec :: Int -> BlockReason -> ShowS Source show :: BlockReason -> String Source showList :: [BlockReason] -> ShowS Source | |
| Show ThreadId | Since: base-4.2.0.0 |
| Show NestedAtomically | Since: base-4.0 |
Определено в Control.Exception.Base МетодыshowsPrec :: Int -> NestedAtomically -> ShowS Source show :: NestedAtomically -> String Source showList :: [NestedAtomically] -> ShowS Source | |
| Show NonTermination | Since: base-4.0 |
Определено в Control.Exception.Base МетодыshowsPrec :: Int -> NonTermination -> ShowS Source show :: NonTermination -> String Source showList :: [NonTermination] -> ShowS Source | |
| Show TypeError | Since: base-4.9.0.0 |
| Show NoMethodError | С версии: base-4.0 |
Определено в Control.Exception.Base МетодыshowsPrec :: Int -> NoMethodError -> ShowS Source show :: NoMethodError -> String Source showList :: [NoMethodError] -> ShowS Source | |
| Show RecUpdError | С версии: base-4.0 |
Определено в Control.Exception.Base МетодыshowsPrec :: Int -> RecUpdError -> ShowS Source show :: RecUpdError -> String Source showList :: [RecUpdError] -> ShowS Source | |
| Show RecConError | С версии: base-4.0 |
Определено в Control.Exception.Base МетодыshowsPrec :: Int -> RecConError -> ShowS Source show :: RecConError -> String Source showList :: [RecConError] -> ShowS Source | |
| Show RecSelError | С версии: base-4.0 |
Определено в Control.Exception.Base МетодыshowsPrec :: Int -> RecSelError -> ShowS Source show :: RecSelError -> String Source showList :: [RecSelError] -> ShowS Source | |
| Show PatternMatchFail | С версии: base-4.0 |
Определено в Control.Exception.Base МетодыshowsPrec :: Int -> PatternMatchFail -> ShowS Source show :: PatternMatchFail -> String Source showList :: [PatternMatchFail] -> ShowS Source | |
| Show FdKey | Since: base-4.4.0.0 |
| Show FD | Since: base-4.1.0.0 |
| Show HandlePosn | Since: base-4.1.0.0 |
Определено в GHC.IO.Handle МетодыshowsPrec :: Int -> HandlePosn -> ShowS Source show :: HandlePosn -> String Source showList :: [HandlePosn] -> ShowS Source | |
| Show Version | Since: base-2.1 |
| Show StaticPtrInfo | Since: base-4.8.0.0 |
Определено в GHC.StaticPtr МетодыshowsPrec :: Int -> StaticPtrInfo -> ShowS Source show :: StaticPtrInfo -> String Source showList :: [StaticPtrInfo] -> ShowS Source | |
| Show ByteOrder | Since: base-4.11.0.0 |
| Show GCDetails | Since: base-4.10.0.0 |
| Show RTSStats | Since: base-4.10.0.0 |
| Show RTSFlags | Since: base-4.8.0.0 |
| Show ParFlags | Since: base-4.8.0.0 |
| Show TickyFlags | Since: base-4.8.0.0 |
Определено в GHC.RTS.Flags Краткое описание методовshowsPrec :: Int -> TickyFlags -> ShowS Source show :: TickyFlags -> String Source showList :: [TickyFlags] -> ShowS Source | |
| Show TraceFlags | Since: base-4.8.0.0 |
Определено в GHC.RTS.Flags Краткое описание методовshowsPrec :: Int -> TraceFlags -> ShowS Source show :: TraceFlags -> String Source showList :: [TraceFlags] -> ShowS Source | |
| Show DoTrace | Since: base-4.8.0.0 |
| Show ProfFlags | Since: base-4.8.0.0 |
| Show DoHeapProfile | Since: base-4.8.0.0 |
Определено в GHC.RTS.Flags МетодыshowsPrec :: Int -> DoHeapProfile -> ShowS Source show :: DoHeapProfile -> String Source showList :: [DoHeapProfile] -> ShowS Source | |
| Show CCFlags | Since: base-4.8.0.0 |
| Show DoCostCentres | Since: base-4.8.0.0 |
Определено в GHC.RTS.Flags МетодыshowsPrec :: Int -> DoCostCentres -> ShowS Source show :: DoCostCentres -> String Source showList :: [DoCostCentres] -> ShowS Source | |
| Show DebugFlags | Since: base-4.8.0.0 |
Определено в GHC.RTS.Flags МетодыshowsPrec :: Int -> DebugFlags -> ShowS Source show :: DebugFlags -> String Source showList :: [DebugFlags] -> ShowS Source | |
| Show MiscFlags | Since: base-4.8.0.0 |
| Show ConcFlags | Since: base-4.8.0.0 |
| Show GCFlags | Since: base-4.8.0.0 |
| Show GiveGCStats | Since: base-4.8.0.0 |
Определено в GHC.RTS.Flags Краткое описание методовshowsPrec :: Int -> GiveGCStats -> ShowS Source show :: GiveGCStats -> String Source showList :: [GiveGCStats] -> ShowS Source | |
| Show Timeout | Since: base-4.0 |
| Show Fixity | Since: base-4.0.0.0 |
| Show ConstrRep | Since: base-4.0.0.0 |
| Show DataRep | Since: base-4.0.0.0 |
| Show Constr | Since: base-4.0.0.0 |
| Show DataType | Since: base-4.0.0.0 |
| Show Void | Since: base-4.8.0.0 |
| Show a => Show [a] | Since: base-2.1 |
| Show a => Show (Maybe a) | Since: base-2.1 |
| Show a => Show (Ratio a) | Since: base-2.0.1 |
| Show (Ptr a) | Since: base-2.1 |
| Show (FunPtr a) | Since: base-2.1 |
| Show p => Show (Par1 p) | Since: base-4.7.0.0 |
| Show a => Show (NonEmpty a) | Since: base-4.11.0.0 |
| Show a => Show (Down a) |
Этот экземпляр был бы эквивалентен производным экземплярам Since: base-4.7.0.0 |
| Show a => Show (Product a) | Since: base-2.1 |
| Show a => Show (Sum a) | Since: base-2.1 |
| Show a => Show (Dual a) | Since: base-2.1 |
| Show a => Show (Last a) | Since: base-2.1 |
| Show a => Show (First a) | Since: base-2.1 |
| Show (ForeignPtr a) | Since: base-2.1 |
Определено в GHC.ForeignPtr Краткое описание методовshowsPrec :: Int -> ForeignPtr a -> ShowS Source show :: ForeignPtr a -> String Source showList :: [ForeignPtr a] -> ShowS Source | |
| Show a => Show (Identity a) |
Этот экземпляр был бы эквивалентен выведенным экземплярам С версии: base-4.8.0.0 |
| Show a => Show (ZipList a) | С версии: base-4.7.0.0 |
| Show a => Show (Option a) | С версии: base-4.9.0.0 |
| Show m => Show (WrappedMonoid m) | С версии: base-4.9.0.0 |
Определено в Data.Semigroup Краткое описание методовshowsPrec :: Int -> WrappedMonoid m -> ShowS Source show :: WrappedMonoid m -> String Source showList :: [WrappedMonoid m] -> ShowS Source | |
| Show a => Show (Last a) | С версии: base-4.9.0.0 |
| Show a => Show (First a) | С версии: base-4.9.0.0 |
| Show a => Show (Max a) | С версии: base-4.9.0.0 |
| (Show a, Show b) => Show (a, b) | Since: base-2.1 |
| Show (ST s a) | Since: base-2.1 |
| (Ix a, Show a, Show b) => Show (Array a b) | Since: base-2.1 |
| Show (Proxy s) | Since: base-4.7.0.0 |
| (Show a, Show b) => Show (Arg a b) | Since: base-4.9.0.0 |
| HasResolution a => Show (Fixed a) | Since: base-2.1 |
| Show (f p) => Show (Rec1 f p) | Since: base-4.7.0.0 |
| Show (URec Word p) | Since: base-4.9.0.0 |
| Show (f a) => Show (Alt f a) | Since: base-4.8.0.0 |
| Show (f a) => Show (Ap f a) | Since: base-4.12.0.0 |
| Show a => Show (Const a b) |
Этот экземпляр был бы эквивалентен выведенным экземплярам нового типа Since: base-4.8.0.0 |
| Show c => Show (K1 i c p) | Since: base-4.7.0.0 |
| (Show (f p), Show (g p)) => Show ((f :+: g) p) | Since: base-4.7.0.0 |
| (Show (f p), Show (g p)) => Show ((f :*: g) p) | Since: base-4.7.0.0 |
| (Show a, Show b, Show c, Show d) => Show (a, b, c, d) | Since: base-2.1 |
| Show (a :~~: b) | Since: base-4.10.0.0 |
| (Show1 f, Show1 g, Show a) => Show (Sum f g a) | Since: base-4.9.0.0 |
| (Show1 f, Show1 g, Show a) => Show (Product f g a) | Since: base-4.9.0.0 |
| Show (f p) => Show (M1 i c f p) | Since: base-4.7.0.0 |
| Show (f (g p)) => Show ((f :.: g) p) | Since: base-4.7.0.0 |
| (Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e) | Since: base-2.1 |
| (Show1 f, Show1 g, Show a) => Show (Compose f g a) | Since: base-4.9.0.0 |
| (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f) | Since: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g) | Since: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h) | Since: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i) | Since: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j) | Since: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k) | Since: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l) | С версии: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m) | С версии: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | С версии: base-2.1 |
| (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | С версии: base-2.1 |
shows :: Show a => a -> ShowS Источник
эквивалентно showsPrec с приоритетом 0.
showChar :: Char -> ShowS Источник
вспомогательная функция, преобразующая Char в функцию отображения, которая просто добавляет символ без изменений.
showString :: String -> ShowS Источник
вспомогательная функция, преобразующая String в функцию отображения, которая просто добавляет строку без изменений.
showParen :: Bool -> ShowS -> ShowS Источник
вспомогательная функция, которая заключает внутреннюю функцию отображения в скобки, когда параметр Bool равен True.
Преобразование из String
type ReadS a = String -> [(a, String)] Source
Парсер для типа a, представленный как функция, которая принимает String и возвращает список возможных разборов в виде пар (a,String).
Обратите внимание, что этот тип парсера с возвратом назад очень неэффективен; чтение большой структуры может быть довольно медленным (см. ReadP).
Разбор String, производящий значения.
Выведенные экземпляры Read делают следующие предположения, которым подчиняются выведенные экземпляры Show:
- Если конструктор определен как инфиксный оператор, то выведенный экземпляр
Readбудет разбирать только инфиксные применения конструктора (не префиксную форму). - Ассоциативность не используется для уменьшения количества скобок, хотя приоритет может использоваться.
- Если конструктор определен с использованием синтаксиса записей, то выведенный
Readбудет разбирать только форму в синтаксисе записей, и, кроме того, поля должны быть указаны в том же порядке, что и в исходном объявлении. - Выведенный экземпляр
Readдопускает произвольные пробелы Haskell между токенами входной строки. Дополнительные скобки также разрешены.
Например, учитывая объявления
infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a
выведенный экземпляр Read в Haskell 2010 эквивалентен
instance (Read a) => Read (Tree a) where
readsPrec d r = readParen (d > app_prec)
(\r -> [(Leaf m,t) |
("Leaf",s) <- lex r,
(m,t) <- readsPrec (app_prec+1) s]) r
++ readParen (d > up_prec)
(\r -> [(u:^:v,w) |
(u,s) <- readsPrec (up_prec+1) r,
(":^:",t) <- lex s,
(v,w) <- readsPrec (up_prec+1) t]) r
where app_prec = 10
up_prec = 5
Обратите внимание, что правоассоциативность :^: не используется.
Выведенный экземпляр в GHC эквивалентен
instance (Read a) => Read (Tree a) where
readPrec = parens $ (prec app_prec $ do
Ident "Leaf" <- lexP
m <- step readPrec
return (Leaf m))
+++ (prec up_prec $ do
u <- step readPrec
Symbol ":^:" <- lexP
v <- step readPrec
return (u :^: v))
where app_prec = 10
up_prec = 5
readListPrec = readListPrecDefault
Зачем существуют как readsPrec, так и readPrec, и почему GHC предпочитает реализовывать readPrec в выведенных экземплярах Read вместо readsPrec? Причина в том, что readsPrec основан на типе ReadS, и хотя ReadS упоминается в отчете Haskell 2010, это не очень эффективная структура данных парсера.
readPrec, с другой стороны, основан на гораздо более эффективном типе данных ReadPrec (также известном как "парсеры нового стиля"), но его определение основано на использовании расширения языка RankNTypes. Поэтому readPrec (и его аналог, readListPrec) помечены как специфичные для GHC. Тем не менее, рекомендуется использовать readPrec вместо readsPrec всякий раз, когда это возможно, из-за повышения эффективности, которое он обеспечивает.
Как упоминалось выше, выведенные экземпляры Read в GHC будут реализовывать readPrec вместо readsPrec. Реализации по умолчанию readsPrec (и его аналога, readList) будут просто использовать readPrec под капотом. Если вы пишете экземпляр Read вручную, рекомендуется написать его следующим образом:
instance Read T where readPrec = ... readListPrec = readListPrecDefault
Методы
Аргументы
| :: Int | приоритет оператора окружающего контекста (число от |
| -> ReadS a |
пытается разобрать значение с начала строки, возвращая список пар (разобранное значение, оставшаяся строка). Если успешного разбора нет, возвращаемый список пуст.
Выведенные экземпляры Read и Show удовлетворяют следующему:
То есть, readsPrec разбирает строку, созданную showsPrec, и возвращает значение, с которого началось showsPrec.
Метод readList предоставляется, чтобы позволить программисту указать специализированный способ разбора списков значений. Например, это используется предопределенным экземпляром Read типа Char, где значения типа String должны использовать двойные кавычки, а не квадратные скобки.
Экземпляры
| Read Bool | С версии: base-2.1 |
Определено в GHC.Read МетодыreadsPrec :: Int -> ReadS Bool Исходный код readList :: ReadS [Bool] Исходный код | |
| Read Char | С версии: base-2.1 |
Определено в GHC.Read МетодыreadsPrec :: Int -> ReadS Char Исходный код readList :: ReadS [Char] Исходный код | |
| Read Double | С версии: base-2.1 |
Определено в GHC.Read МетодыreadsPrec :: Int -> ReadS Double Исходный код readList :: ReadS [Double] Исходный код | |
| Read Float | С версии: base-2.1 |
Определено в GHC.Read МетодыreadsPrec :: Int -> ReadS Float Исходный код readList :: ReadS [Float] Исходный код | |
| Read Int | С версии: base-2.1 |
Определено в GHC.Read МетодыreadsPrec :: Int -> ReadS Int Исходный код readList :: ReadS [Int] Исходный код | |
| Read Int8 | С версии: base-2.1 |
Определено в GHC.Int МетодыreadsPrec :: Int -> ReadS Int8 Исходный код readList :: ReadS [Int8] Исходный код | |
| Read Int16 | С версии: base-2.1 |
Определено в GHC.Read Краткое описание методовreadsPrec :: Int -> ReadS GeneralCategory Source readList :: ReadS [GeneralCategory] Source | |
| Read Lexeme | С версии: base-2.1 |
| Read IOMode | С версии: base-4.2.0.0 |
| Read IntPtr | |
| Read WordPtr | |
| Read CUIntMax | |
| Read CIntMax | |
| Read SomeNat | Since: base-4.7.0.0 |
| Read SomeSymbol | Since: base-4.7.0.0 |
Определено в GHC.TypeLits МетодыreadsPrec :: Int -> ReadS SomeSymbol Source readList :: ReadS [SomeSymbol] Source | |
| Read DecidedStrictness | Since: base-4.9.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS DecidedStrictness Source readList :: ReadS [DecidedStrictness] Source | |
| Read SourceStrictness | Since: base-4.9.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS SourceStrictness Source readList :: ReadS [SourceStrictness] Source | |
| Read SourceUnpackedness | Since: base-4.9.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS SourceUnpackedness Source readList :: ReadS [SourceUnpackedness] Source | |
| Read Associativity | С версии: base-4.6.0.0 |
Определено в GHC.Generics МетодыreadsPrec :: Int -> ReadS Associativity Source readList :: ReadS [Associativity] Source | |
| Read Fixity | С версии: base-4.6.0.0 |
| Read Any | С версии: base-2.1 |
| Read All | С версии: base-2.1 |
| Read SeekMode | С версии: base-4.2.0.0 |
| Read NewlineMode | С версии: base-4.3.0.0 |
Определено в GHC.IO.Handle.Types МетодыreadsPrec :: Int -> ReadS NewlineMode Source readList :: ReadS [NewlineMode] Source | |
| Read Newline | Since: base-4.3.0.0 |
| Read BufferMode | Since: base-4.2.0.0 |
Определено в GHC.IO.Handle.Types Краткое описание методовreadsPrec :: Int -> ReadS BufferMode Source readList :: ReadS [BufferMode] Source | |
| Read ExitCode | |
| Read Fd | |
| Read CNfds | |
| Read CSocklen | |
| Read CKey | |
| Read a => Read (Identity a) |
Этот экземпляр был бы эквивалентен выведенным экземплярам Since: base-4.8.0.0 |
| Read a => Read (ZipList a) | Since: base-4.7.0.0 |
| Read a => Read (Option a) | Since: base-4.9.0.0 |
| Read m => Read (WrappedMonoid m) | Since: base-4.9.0.0 |
Определено в Data.Semigroup MethodsreadsPrec :: Int -> ReadS (WrappedMonoid m) Source readList :: ReadS [WrappedMonoid m] Source readPrec :: ReadPrec (WrappedMonoid m) Source readListPrec :: ReadPrec [WrappedMonoid m] Source | |
| Read a => Read (Last a) | Since: base-4.9.0.0 |
| Read a => Read (First a) | Since: base-4.9.0.0 |
| (Read a, Read b) => Read (a, b) | Since: base-2.1 |
| (Ix a, Read a, Read b) => Read (Array a b) | Since: base-2.1 |
| Read (Proxy t) | Since: base-4.7.0.0 |
| (Read a, Read b) => Read (Arg a b) | Since: base-4.9.0.0 |
| HasResolution a => Read (Fixed a) | Since: base-4.3.0.0 |
| Read (f p) => Read (Rec1 f p) | Since: base-4.7.0.0 |
| Read a => Read (Const a b) |
Этот экземпляр был бы эквивалентен выведенным экземплярам Since: base-4.8.0.0 |
| Read c => Read (K1 i c p) | Since: base-4.7.0.0 |
| (Read (f p), Read (g p)) => Read ((f :+: g) p) | Since: base-4.7.0.0 |
| (Read (f p), Read (g p)) => Read ((f :*: g) p) | Since: base-4.7.0.0 |
| (Read a, Read b, Read c, Read d) => Read (a, b, c, d) | Since: base-2.1 |
| a ~~ b => Read (a :~~: b) | Since: base-4.10.0.0 |
| (Read1 f, Read1 g, Read a) => Read (Sum f g a) | С версии: base-4.9.0.0 |
| (Read1 f, Read1 g, Read a) => Read (Product f g a) | С версии: base-4.9.0.0 |
| Read (f p) => Read (M1 i c f p) | С версии: base-4.7.0.0 |
| Read (f (g p)) => Read ((f :.: g) p) | С версии: base-4.7.0.0 |
| (Read a, Read b, Read c, Read d, Read e) => Read (a, b, c, d, e) | С версии: base-2.1 |
| (Read1 f, Read1 g, Read a) => Read (Compose f g a) | Since: base-4.9.0.0 |
| (Read a, Read b, Read c, Read d, Read e, Read f) => Read (a, b, c, d, e, f) | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g) => Read (a, b, c, d, e, f, g) | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h) => Read (a, b, c, d, e, f, g, h) | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i) => Read (a, b, c, d, e, f, g, h, i) | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j) => Read (a, b, c, d, e, f, g, h, i, j) | Since: base-2.1 |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k) => Read (a, b, c, d, e, f, g, h, i, j, k) | Since: base-2.1 |
Определено в GHC.Read | |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l) => Read (a, b, c, d, e, f, g, h, i, j, k, l) | Since: base-2.1 |
Определено в GHC.Read | |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m) | Since: base-2.1 |
Определено в GHC.Read Краткое описание методовreadsPrec :: Int -> ReadS (a, b, c, d, e, f, g, h, i, j, k, l, m) Source readList :: ReadS [(a, b, c, d, e, f, g, h, i, j, k, l, m)] Source readPrec :: ReadPrec (a, b, c, d, e, f, g, h, i, j, k, l, m) Source readListPrec :: ReadPrec [(a, b, c, d, e, f, g, h, i, j, k, l, m)] Source | |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | Since: base-2.1 |
Defined in GHC.Read МетодыreadsPrec :: Int -> ReadS (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source readList :: ReadS [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] Source readPrec :: ReadPrec (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source readListPrec :: ReadPrec [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] Source | |
| (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n, Read o) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | Since: base-2.1 |
Defined in GHC.Read МетодыreadsPrec :: Int -> ReadS (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source readList :: ReadS [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] Source readPrec :: ReadPrec (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source readListPrec :: ReadPrec [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] Source | |
reads :: Read a => ReadS a Source
эквивалентно readsPrec с приоритетом 0.
readParen :: Bool -> ReadS a -> ReadS a Source
readParen True p разбирает то, что разбирает p, но заключённое в круглые скобки.
readParen False p разбирает то, что разбирает p, но необязательно заключённое в круглые скобки.
read :: Read a => String -> a Source
Функция read считывает входные данные из строки, которая должна быть полностью обработана входным процессом. read завершается с ошибкой error, если разбор не удался, поэтому его использование в реальных приложениях не рекомендуется. Используйте readMaybe или readEither в качестве безопасных альтернатив.
>>> read "123" :: Int 123
>>> read "hello" :: Int *** Exception: Prelude.read: no parse
Функция lex считывает одну лексему из входных данных, игнорируя начальные пробелы, и возвращает символы, составляющие лексему. Если входная строка содержит только пробелы, lex возвращает одну успешную лексему, состоящую из пустой строки. (Таким образом, lex "" = [("","")]). Если в начале входной строки нет допустимой лексемы, lex завершается с ошибкой (т.е. возвращает []).
Этот лексер не полностью соответствует лексическому синтаксису Haskell в следующих аспектах:
- Квалифицированные имена обрабатываются неправильно
- Восьмеричные и шестнадцатеричные числа не распознаются как один токен
- Комментарии обрабатываются неправильно
Базовый ввод и вывод
Значение типа IO a — это вычисление, которое при выполнении производит некоторые операции ввода-вывода, прежде чем вернуть значение типа a.
Существует лишь один способ "выполнить" действие ввода-вывода: привязать его к Main.main в вашей программе. Когда ваша программа запускается, выполняется ввод-вывод. Невозможно выполнить ввод-вывод из произвольной функции, если только эта функция сама не находится в монаде IO и вызывается в какой-то момент, прямо или косвенно, из Main.main.
IO является монадой, поэтому действия IO могут быть объединены с использованием либо do-нотации, либо операций >> и >>= из класса Monad.
Экземпляры
| Monad IO | Since: base-2.1 |
| Functor IO | Since: base-2.1 |
| MonadFix IO | Since: base-2.1 |
Определено в Control.Monad.Fix | |
| MonadFail IO | Since: base-4.9.0.0 |
Определено в Control.Monad.Fail | |
| Applicative IO | Since: base-2.1 |
| GHCiSandboxIO IO | Since: base-4.4.0.0 |
Определено в GHC.GHCi МетодыghciStepIO :: IO a -> IO a Source | |
| MonadPlus IO | Since: base-4.9.0.0 |
| Alternative IO | Since: base-4.9.0.0 |
| MonadIO IO | Since: base-4.9.0.0 |
Определено в Control.Monad.IO.Class | |
| Semigroup a => Semigroup (IO a) | Since: base-4.10.0.0 |
| Monoid a => Monoid (IO a) | Since: base-4.9.0.0 |
| a ~ () => HPrintfType (IO a) | Since: base-4.7.0.0 |
Определено в Text.Printf | |
| a ~ () => PrintfType (IO a) | Since: base-4.7.0.0 |
Определено в Text.Printf | |
Простые операции ввода/вывода
Функции вывода
putChar :: Char -> IO () Source
Записывает символ в стандартное устройство вывода (то же самое, что hPutChar stdout).
putStr :: String -> IO () Source
Записывает строку в стандартное устройство вывода (то же самое, что hPutStr stdout).
putStrLn :: String -> IO () Source
То же самое, что putStr, но добавляет символ новой строки.
print :: Show a => a -> IO () Source
Функция print выводит значение любого печатаемого типа в стандартное устройство вывода. Печатаемые типы — это те, которые являются экземплярами класса Show; print преобразует значения в строки для вывода с помощью операции show и добавляет новую строку.
Например, программу для печати первых 20 целых чисел и их степеней 2 можно написать следующим образом:
main = print ([(n, 2^n) | n <- [0..19]])
Функции ввода
Считывает символ со стандартного устройства ввода (то же самое, что hGetChar stdin).
Считывает строку со стандартного устройства ввода (то же самое, что hGetLine stdin).
getContents :: IO String Source
Операция getContents возвращает весь ввод пользователя в виде одной строки, которая считывается лениво по мере необходимости (то же самое, что hGetContents stdin).
interact :: (String -> String) -> IO () Source
Функция interact принимает в качестве аргумента функцию типа String->String. Весь ввод со стандартного устройства ввода передается этой функции в качестве аргумента, а результирующая строка выводится на стандартное устройство вывода.
Файлы
Имена файлов и каталогов являются значениями типа String, точное значение которых зависит от операционной системы. Файлы могут быть открыты, что дает дескриптор, который затем можно использовать для работы с содержимым этого файла.
readFile :: FilePath -> IO String Source
Функция readFile считывает файл и возвращает его содержимое в виде строки. Файл считывается лениво, по требованию, как и getContents.
writeFile :: FilePath -> String -> IO () Source
Вычисление writeFile file str функция записывает строку str в файл file.
appendFile :: FilePath -> String -> IO () Source
Вычисление appendFile file str функция добавляет строку str в файл file.
Обратите внимание, что writeFile и appendFile записывают литеральную строку в файл. Чтобы записать значение любого печатаемого типа, как и в случае с print, сначала используйте функцию show для преобразования значения в строку.
main = appendFile "squares" (show [(x,x*x) | x <- [0,0.1..2]])
readIO :: Read a => String -> IO a Source
Функция readIO похожа на read, за исключением того, что она сигнализирует об ошибке синтаксического анализа монаде IO, вместо того чтобы завершать программу.
Функция readLn объединяет getLine и readIO.
Обработка исключений в монаде I/O
type IOError = IOException Source
Тип Haskell 2010 для исключений в монаде IO. Любая операция ввода-вывода может вызвать IOError вместо возвращения результата. Для более общего типа исключения, включая также те, которые возникают в чистом коде, см. Exception.
В Haskell 2010 это непрозрачный тип.
ioError :: IOError -> IO a Source
userError :: String -> IOError Source
Создать значение IOError со строкой, описывающей ошибку. Метод fail экземпляра IO класса Monad вызывает userError, таким образом:
instance Monad IO where ... fail s = ioError (userError s)
© 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/Prelude.html