Spec-Zone.ru › Haskell 7

GHC.Integer

Copyright (c) Herbert Valerio Riedel 2014
License BSD3
Maintainer ghc-devs@haskell.org
Stability временная
Portability непереносимый (расширения GHC)
Safe Haskell Нет
Language Haskell2010

Содержание

  • Конструктор Integers
  • Преобразование в другие целочисленные типы
  • Вспомогательные функции для операций класса RealFloat
  • Арифметические операции
  • Предикаты сравнения
    • Int#-логические версии предикатов сравнения
  • Битовые операции
  • Хэширование

Описание

Тип Integer.

Этот модуль предоставляет переносимый API для Integer. См. GHC.Integer.GMP.Internals для integer-gmp-специфического внутреннего представления Integer и оптимизированных операций, специфичных для GMP.

data Integer Источник

Инвариант: Jn# и Jp# используются только тогда, когда значение не помещается в S#

Полезные свойства, вытекающие из инвариантов:

  • abs (S# _) <= abs (Jp# _)
  • abs (S# _) <  abs (Jn# _)

Примеры реализации

Eq Integer
Ord Integer

Конструирование Integer

mkInteger Источник

Аргументы

:: Bool

Знак целого числа (True если неотрицательный)

-> [Int]

Абсолютное значение, выраженное в 31-битных блоках, младший бит первым (в идеале, это должны быть машинные Word-значения, а не 31-битные усеченные Int)

-> Integer

Конструирование значения Integer из списка Int.

Эта функция используется GHC для создания целочисленных литералов Integer.

smallInteger :: Int# -> Integer Источник

Следует скорее называть intToInteger

wordToInteger :: Word# -> Integer Источник

Преобразование в другие целочисленные типы

integerToWord :: Integer -> Word# Источник

integerToInt :: Integer -> Int# Источник

Усекает Integer до младших Int#

Вспомогательные функции для операций класса RealFloat

encodeFloatInteger :: Integer -> Int# -> Float# Источник

floatFromInteger :: Integer -> Float# Источник

encodeDoubleInteger :: Integer -> Int# -> Double# Источник

decodeDoubleInteger :: Double# -> (#Integer, Int##) Источник

doubleFromInteger :: Integer -> Double# Источник

Арифметические операции

plusInteger :: Integer -> Integer -> Integer Источник

Сложение двух Integer

minusInteger :: Integer -> Integer -> Integer Источник

Вычитание двух Integer друг из друга.

timesInteger :: Integer -> Integer -> Integer Источник

Умножение двух Integer

negateInteger :: Integer -> Integer Источник

Изменение знака Integer

absInteger :: Integer -> Integer Источник

Вычисление абсолютного значения Integer

signumInteger :: Integer -> Integer Источник

Возвращает -1, 0, и 1 в зависимости от того, отрицательно ли аргумент, равен ли он нулю или положителен, соответственно

divModInteger :: Integer -> Integer -> (#Integer, Integer#) Источник

Одновременное вычисление divInteger и modInteger.

Делитель должен быть ненулевым, иначе среда выполнения GHC завершится с ошибкой деления на ноль.

divInteger :: Integer -> Integer -> Integer Источник

modInteger :: Integer -> Integer -> Integer Источник

quotRemInteger :: Integer -> Integer -> (#Integer, Integer#) Source

Одновременное вычисление quotInteger и remInteger.

Делитель должен быть отличным от нуля, в противном случае исполняемая среда GHC завершится с ошибкой деления на ноль.

quotInteger :: Integer -> Integer -> Integer Source

remInteger :: Integer -> Integer -> Integer Source

Предикаты сравнения

eqInteger :: Integer -> Integer -> Bool Source

neqInteger :: Integer -> Integer -> Bool Source

Предикат неравенства.

leInteger :: Integer -> Integer -> Bool Source

gtInteger :: Integer -> Integer -> Bool Source

ltInteger :: Integer -> Integer -> Bool Source

geInteger :: Integer -> Integer -> Bool Source

compareInteger :: Integer -> Integer -> Ordering Source

Int# - булевы версии предикатов сравнения

Эти операции возвращают 0# и 1# вместо False и True соответственно. Более подробную информацию см. на странице wiki-странице PrimBool.

eqInteger# :: Integer -> Integer -> Int# Source

neqInteger# :: Integer -> Integer -> Int# Source

leInteger# :: Integer -> Integer -> Int# Source

gtInteger# :: Integer -> Integer -> Int# Source

ltInteger# :: Integer -> Integer -> Int# Source

geInteger# :: Integer -> Integer -> Int# Source

Битовые операции

andInteger :: Integer -> Integer -> Integer Source

Битовая операция И

orInteger :: Integer -> Integer -> Integer Source

Битовая операция ИЛИ

xorInteger :: Integer -> Integer -> Integer Source

Битовая операция ИСКЛЮЧАЮЩЕЕ ИЛИ

complementInteger :: Integer -> Integer Source

Битовая операция NOT

shiftLInteger :: Integer -> Int# -> Integer Source

Операция сдвига влево

Несмотря на то, что величина сдвига выражается как Int#, результат не определён для отрицательных значений сдвига.

shiftRInteger :: Integer -> Int# -> Integer Source

Операция арифметического сдвига вправо

Несмотря на то, что величина сдвига выражается как Int#, результат не определён для отрицательных значений сдвига.

testBitInteger :: Integer -> Int# -> Bool Source

Проверка, установлена ли n-я битовая.

Хеширование

hashInteger :: Integer -> Int# Source

© 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/integer-gmp-1.0.0.0/GHC-Integer.html

Spec-Zone.ru

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