GHC.TypeLits
| Safe Haskell | Надёжный |
|---|---|
| Язык | Haskell2010 |
Описание
Этот модуль является внутренним модулем GHC. Он объявляет константы, используемые в реализации натуральных чисел на уровне типов. Интерфейс программиста для работы с натуральными числами на уровне типов должен быть определён в отдельной библиотеке.
С тех пор как: 4.6.0.0
Типы
(Тип) Это тип натуральных чисел на уровне типов.
(Тип) Это тип символов на уровне типов.
Связывание уровня типов и значений
Этот класс возвращает целое число, связанное с натуральным числом на уровне типов. Существуют примеры класса для каждого конкретного литерала: 0, 1, 2 и т.д.
С тех пор как: 4.7.0.0
Минимальное полное определение
natSing
natVal :: forall n proxy. KnownNat n => proxy n -> Integer Источник
С тех пор как: 4.7.0.0
natVal' :: forall n. KnownNat n => Proxy# n -> Integer Источник
С тех пор как: 4.8.0.0
class KnownSymbol n Источник
Этот класс возвращает строку, связанную со символом на уровне типов. Существуют примеры класса для каждого конкретного литерала: "hello" и т.д.
С тех пор как: 4.7.0.0
Минимальное полное определение
symbolSing
symbolVal :: forall n proxy. KnownSymbol n => proxy n -> String Источник
С тех пор как: 4.7.0.0
symbolVal' :: forall n. KnownSymbol n => Proxy# n -> String Источник
С тех пор как: 4.8.0.0
Этот тип представляет неизвестные натуральные числа на уровне типов.
data SomeSymbol Источник
Этот тип представляет неизвестные символы на уровне типов.
Конструкторы
| forall n . KnownSymbol n => SomeSymbol (Proxy n) | С тех пор как: 4.7.0.0 |
Примеры
someNatVal :: Integer -> Maybe SomeNat Источник
Преобразовать целое число в неизвестное натуральное число на уровне типов.
С тех пор как: 4.7.0.0
someSymbolVal :: String -> SomeSymbol Источник
Преобразовать строку в неизвестный символ на уровне типов.
С тех пор как: 4.7.0.0
sameNat :: (KnownNat a, KnownNat b) => Proxy a -> Proxy b -> Maybe (a :~: b) Источник
Мы либо получаем доказательство, что функция была вызвана с одинаковыми числами на уровне типов, либо Nothing.
С тех пор как: 4.7.0.0
sameSymbol :: (KnownSymbol a, KnownSymbol b) => Proxy a -> Proxy b -> Maybe (a :~: b) Источник
Мы либо получаем доказательство, что функция была вызвана с теми же символами на уровне типов, либо Nothing.
С тех пор как: 4.7.0.0
Функции над литералами типов
type (<=) x y = (x <=? y) ~ True infix 4 Источник
Сравнение натуральных чисел на уровне типов как ограничение.
type family m <=? n :: Bool infix 4 Источник
Сравнение натуральных чисел на уровне типов как функция. ПРИМЕЧАНИЕ: функциональность этой функции должна быть подсуммирована CmpNat, поэтому она может быть удалена в будущем. Пожалуйста, сообщите нам, если вы обнаружите расхождения между двумя функциями.
type family m + n :: Nat infixl 6 Источник
Сложение натуральных чисел на уровне типов.
type family m * n :: Nat infixl 7 Источник
Умножение натуральных чисел на уровне типов.
Возведение в степень для натуральных чисел на уровне типов.
type family m - n :: Nat infixl 6 Source
Вычитание натуральных чисел на уровне типов.
С тех пор как: 4.7.0.0
type family CmpNat m n :: Ordering Source
Сравнение натуральных чисел на уровне типов, как функция.
С тех пор как: 4.7.0.0
type family CmpSymbol m n :: Ordering Source
Сравнение символов на уровне типов, как функция.
С тех пор как: 4.7.0.0
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/GHC-TypeLits.html