Spec-Zone.ru › Haskell 7

GHC.TypeLits

Safe Haskell Надёжный
Язык Haskell2010

Содержание

  • Типы
  • Связывание уровня типов и значений
  • Функции над литералами типов

Описание

Этот модуль является внутренним модулем GHC. Он объявляет константы, используемые в реализации натуральных чисел на уровне типов. Интерфейс программиста для работы с натуральными числами на уровне типов должен быть определён в отдельной библиотеке.

С тех пор как: 4.6.0.0

Типы

data Nat Источник

(Тип) Это тип натуральных чисел на уровне типов.

Примеры

type (==) Nat a b

data Symbol Источник

(Тип) Это тип символов на уровне типов.

Примеры

type (==) Symbol a b

Связывание уровня типов и значений

class KnownNat n Источник

Этот класс возвращает целое число, связанное с натуральным числом на уровне типов. Существуют примеры класса для каждого конкретного литерала: 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 SomeNat Источник

Этот тип представляет неизвестные натуральные числа на уровне типов.

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

forall n . KnownNat n => SomeNat (Proxy n)

С тех пор как: 4.7.0.0

Примеры

Eq SomeNat
Ord SomeNat
Read SomeNat
Show SomeNat

data SomeSymbol Источник

Этот тип представляет неизвестные символы на уровне типов.

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

forall n . KnownSymbol n => SomeSymbol (Proxy n)

С тех пор как: 4.7.0.0

Примеры

Eq SomeSymbol
Ord SomeSymbol
Read SomeSymbol
Show SomeSymbol

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

Возведение в степень для натуральных чисел на уровне типов.

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

Spec-Zone.ru

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