| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Closed.Internal
Synopsis
- newtype Closed (n :: Nat) (m :: Nat) = Closed {}
- data Endpoint
- type family Bounds (lhs :: Endpoint) (rhs :: Endpoint) :: * where ...
- type Single (n :: Nat) = Bounds (Inclusive n) (Inclusive n)
- type FiniteNat (rhs :: Endpoint) = Bounds (Inclusive 0) rhs
- lowerBound :: Closed n m -> Proxy n
- upperBound :: Closed n m -> Proxy m
- closed :: forall n m. (n <= m, KnownNat n, KnownNat m) => Integer -> Maybe (Closed n m)
- unsafeClosed :: forall n m. (HasCallStack, n <= m, KnownNat n, KnownNat m) => Integer -> Closed n m
- unrepresentable :: (KnownNat n, KnownNat m) => Integer -> Closed n m -> String -> String
- natToClosed :: forall n m x proxy. (n <= x, x <= m, KnownNat x, KnownNat n, KnownNat m) => proxy x -> Closed n m
- weakenUpper :: forall k n m. (n <= m, m <= k) => Closed n m -> Closed n k
- weakenLower :: forall k n m. (n <= m, k <= n) => Closed n m -> Closed k m
- strengthenUpper :: forall k n m. (KnownNat n, KnownNat m, KnownNat k, n <= m, n <= k, k <= m) => Closed n m -> Maybe (Closed n k)
- strengthenLower :: forall k n m. (KnownNat n, KnownNat m, KnownNat k, n <= m, n <= k, k <= m) => Closed n m -> Maybe (Closed k m)
- equals :: Closed n m -> Closed o p -> Bool
- cmp :: Closed n m -> Closed o p -> Ordering
- add :: Closed n m -> Closed o p -> Closed (n + o) (m + p)
- sub :: Closed n m -> Closed o p -> Either (Closed (o - n) (p - m)) (Closed (n - o) (m - p))
- multiply :: Closed n m -> Closed o p -> Closed (n * o) (m * p)
- isValidClosed :: (KnownNat n, KnownNat m) => Closed n m -> Bool
Documentation
newtype Closed (n :: Nat) (m :: Nat) #
Instances
| (n <= m, KnownNat n, KnownNat m) => Bounded (Closed n m) # | Generate the lowest and highest inhabitant of a given |
| (n <= m, KnownNat n, KnownNat m) => Enum (Closed n m) # | Enumerate values in the range of a given |
Defined in Closed.Internal Methods succ :: Closed n m -> Closed n m # pred :: Closed n m -> Closed n m # fromEnum :: Closed n m -> Int # enumFrom :: Closed n m -> [Closed n m] # enumFromThen :: Closed n m -> Closed n m -> [Closed n m] # enumFromTo :: Closed n m -> Closed n m -> [Closed n m] # enumFromThenTo :: Closed n m -> Closed n m -> Closed n m -> [Closed n m] # | |
| Eq (Closed n m) # | Test equality on |
| (n <= m, KnownNat n, KnownNat m) => Integral (Closed n m) # | |
Defined in Closed.Internal Methods quot :: Closed n m -> Closed n m -> Closed n m # rem :: Closed n m -> Closed n m -> Closed n m # div :: Closed n m -> Closed n m -> Closed n m # mod :: Closed n m -> Closed n m -> Closed n m # quotRem :: Closed n m -> Closed n m -> (Closed n m, Closed n m) # divMod :: Closed n m -> Closed n m -> (Closed n m, Closed n m) # | |
| (n <= m, KnownNat n, KnownNat m) => Num (Closed n m) # | Bounded arithmetic, e.g. maxBound + 1 == maxBound |
Defined in Closed.Internal | |
| Ord (Closed n m) # | Compare |
| (n <= m, KnownNat n, KnownNat m) => Real (Closed n m) # | |
Defined in Closed.Internal Methods toRational :: Closed n m -> Rational # | |
| Show (Closed n m) # | |
| Generic (Closed n m) # | |
| (n <= m, KnownNat n, KnownNat m) => Arbitrary (Closed n m) # | |
| Hashable (Closed n m) # | |
Defined in Closed.Internal | |
| ToJSON (Closed n m) # | |
Defined in Closed.Internal | |
| (n <= m, KnownNat n, KnownNat m) => FromJSON (Closed n m) # | |
| (n <= m, KnownNat n, KnownNat m) => FromField (Closed n m) # | |
Defined in Closed.Internal Methods parseField :: Field -> Parser (Closed n m) # | |
| ToField (Closed n m) # | |
Defined in Closed.Internal | |
| NFData (Closed n m) # | |
Defined in Closed.Internal | |
| (n <= m, KnownNat n, KnownNat m) => PersistFieldSql (Closed n m) # | |
| (n <= m, KnownNat n, KnownNat m) => PersistField (Closed n m) # | |
Defined in Closed.Internal Methods toPersistValue :: Closed n m -> PersistValue # fromPersistValue :: PersistValue -> Either Text (Closed n m) # | |
| type Rep (Closed n m) # | |
Defined in Closed.Internal | |
Describe whether the endpoint of a Bounds includes
or excludes its argument
type family Bounds (lhs :: Endpoint) (rhs :: Endpoint) :: * where ... #
Syntactic sugar to express open and half-open intervals using
the Closed type
type Single (n :: Nat) = Bounds (Inclusive n) (Inclusive n) #
Syntactic sugar to express a value that has only one non-bottom
inhabitant using the Closed type
type FiniteNat (rhs :: Endpoint) = Bounds (Inclusive 0) rhs #
Syntactic sugar to express a value whose lower bound is zero
lowerBound :: Closed n m -> Proxy n #
Proxy for the lower bound of a Closed value
upperBound :: Closed n m -> Proxy m #
Proxy for the upper bound of a Closed value
closed :: forall n m. (n <= m, KnownNat n, KnownNat m) => Integer -> Maybe (Closed n m) #
Safely create a Closed value using the specified argument
unsafeClosed :: forall n m. (HasCallStack, n <= m, KnownNat n, KnownNat m) => Integer -> Closed n m #
Create a Closed value throwing an error if the argument is not in range
natToClosed :: forall n m x proxy. (n <= x, x <= m, KnownNat x, KnownNat n, KnownNat m) => proxy x -> Closed n m #
Convert a type-level literal into a Closed value
weakenUpper :: forall k n m. (n <= m, m <= k) => Closed n m -> Closed n k #
Add inhabitants at the end
weakenLower :: forall k n m. (n <= m, k <= n) => Closed n m -> Closed k m #
Add inhabitants at the beginning
strengthenUpper :: forall k n m. (KnownNat n, KnownNat m, KnownNat k, n <= m, n <= k, k <= m) => Closed n m -> Maybe (Closed n k) #
Remove inhabitants from the end. Returns Nothing if the input was removed
strengthenLower :: forall k n m. (KnownNat n, KnownNat m, KnownNat k, n <= m, n <= k, k <= m) => Closed n m -> Maybe (Closed k m) #
Remove inhabitants from the beginning. Returns Nothing if the input was removed
equals :: Closed n m -> Closed o p -> Bool infix 4 #
Test two different types of Closed values for equality.
multiply :: Closed n m -> Closed o p -> Closed (n * o) (m * p) #
Multiply two different types of Closed values
isValidClosed :: (KnownNat n, KnownNat m) => Closed n m -> Bool #
Verifies that a given Closed value is valid.
Should always return True unles you bring the Closed.Internal.Closed constructor into scope,
or use unsafeCoerce or other nasty hacks