pos-0.3.0.0: positive numbers
Copyright(c) Grant Weyburne 2022
LicenseBSD-3
Safe HaskellNone
LanguageHaskell2010

Data.Pos

Description

 
Synopsis

core type

data Pos Source #

holds a positive number

Instances

Instances details
Bounded Pos Source # 
Instance details

Defined in Data.Pos

Methods

minBound :: Pos #

maxBound :: Pos #

Enum Pos Source #

Enum instance for Pos

Instance details

Defined in Data.Pos

Methods

succ :: Pos -> Pos #

pred :: Pos -> Pos #

toEnum :: Int -> Pos #

fromEnum :: Pos -> Int #

enumFrom :: Pos -> [Pos] #

enumFromThen :: Pos -> Pos -> [Pos] #

enumFromTo :: Pos -> Pos -> [Pos] #

enumFromThenTo :: Pos -> Pos -> Pos -> [Pos] #

Eq Pos Source # 
Instance details

Defined in Data.Pos

Methods

(==) :: Pos -> Pos -> Bool #

(/=) :: Pos -> Pos -> Bool #

Ord Pos Source # 
Instance details

Defined in Data.Pos

Methods

compare :: Pos -> Pos -> Ordering #

(<) :: Pos -> Pos -> Bool #

(<=) :: Pos -> Pos -> Bool #

(>) :: Pos -> Pos -> Bool #

(>=) :: Pos -> Pos -> Bool #

max :: Pos -> Pos -> Pos #

min :: Pos -> Pos -> Pos #

Read Pos Source # 
Instance details

Defined in Data.Pos

Show Pos Source # 
Instance details

Defined in Data.Pos

Methods

showsPrec :: Int -> Pos -> ShowS #

show :: Pos -> String #

showList :: [Pos] -> ShowS #

NFData Pos Source # 
Instance details

Defined in Data.Pos

Methods

rnf :: Pos -> () #

destructors

pattern Pos :: Int -> Pos Source #

readonly pattern synonym for Pos

unP :: Pos -> Int Source #

unwrap Pos

constructors

_P :: forall n. PosC n => Pos Source #

construct a valid Pos using a Nat

unsafePos :: HasCallStack => String -> Int -> Pos Source #

try to convert an Int to a Pos

eitherPos :: Int -> Either String Pos Source #

try to convert an Int to a Pos

values

_1P :: Pos Source #

commonly used values for Pos

_2P :: Pos Source #

commonly used values for Pos

_3P :: Pos Source #

commonly used values for Pos

_4P :: Pos Source #

commonly used values for Pos

_5P :: Pos Source #

commonly used values for Pos

_6P :: Pos Source #

commonly used values for Pos

_7P :: Pos Source #

commonly used values for Pos

_8P :: Pos Source #

commonly used values for Pos

_9P :: Pos Source #

commonly used values for Pos

_10P :: Pos Source #

commonly used values for Pos

_11P :: Pos Source #

commonly used values for Pos

_12P :: Pos Source #

commonly used values for Pos

_13P :: Pos Source #

commonly used values for Pos

_14P :: Pos Source #

commonly used values for Pos

_15P :: Pos Source #

commonly used values for Pos

_16P :: Pos Source #

commonly used values for Pos

_17P :: Pos Source #

commonly used values for Pos

_18P :: Pos Source #

commonly used values for Pos

_19P :: Pos Source #

commonly used values for Pos

_20P :: Pos Source #

commonly used values for Pos

arithmetic

(*!) :: Pos -> Pos -> Pos infixl 7 Source #

multiply two positive numbers

(+!) :: Pos -> Pos -> Pos infixl 6 Source #

add two positive numbers

minusP :: Pos -> Pos -> Either String Pos Source #

subtract two positive numbers

productP :: Foldable t => t Pos -> Pos Source #

product of list of Pos values is always positive

productPInt :: Foldable t => t Pos -> Int Source #

product of list of Pos values is always positive

safeDivP :: Pos -> Pos -> Pos Source #

safely divide Pos values but the result is increased by one to guarantee the result is still positive

divModP :: Int -> Pos -> (Int, Natural) Source #

divMod for Pos returning Natural for the remainder

maxP :: Pos -> Int -> Pos Source #

max of a Pos and an Int

predP :: Pos -> Either String Pos Source #

previous value for Pos

succP :: Pos -> Pos Source #

next value for Pos (not redundant as it is always successful and never partial)

type level

class KnownNat n => PosC n where Source #

constraint for positive numbers

Minimal complete definition

fromNP

Instances

Instances details
(KnownNat n, FailUnless (1 <=? n) ('Text "PosC n: requires n >= 1 but found " :<>: 'ShowType n)) => PosC n Source # 
Instance details

Defined in Data.Pos

class NS ns where Source #

conversion from list of Nats to Positives

Minimal complete definition

fromNSP, nsLengthP

Instances

Instances details
(TypeError ('Text "NS: empty dimensions are not supported") :: Constraint) => NS ('[] :: [Nat]) Source # 
Instance details

Defined in Data.Pos

(PosC n, NS (n1 ': ns)) => NS (n ': (n1 ': ns)) Source # 
Instance details

Defined in Data.Pos

PosC n => NS '[n] Source # 
Instance details

Defined in Data.Pos

miscellaneous

fromPositives :: Foldable t => t Pos -> [Int] Source #

converts a container of positives to a list of ints

toPositives :: Foldable t => t Int -> Either String (NonEmpty Pos) Source #

converts a list of ints to a nonempty list of positives

posRange :: Int -> Int -> Either String (NonEmpty Pos) Source #

enumerate a nonempty list of Pos from "i" to "j"

parsers

pPositives :: Char -> Char -> ReadP (NonEmpty Pos) Source #

parser for a list of positive numbers as ints

pPos :: ReadP Pos Source #

parser for a Pos

pPosInt :: ReadP Pos Source #

parser for a Pos but just reading in a positive number

pInt :: ReadP Int Source #

parser for an Int