| Copyright | (c) Sirui Lu 2024 |
|---|---|
| License | BSD-3-Clause (see the LICENSE file) |
| Maintainer | siruilu@cs.washington.edu |
| Stability | Experimental |
| Portability | GHC only |
| Safe Haskell | None |
| Language | Haskell2010 |
Grisette.Internal.Unified.Class.UnifiedSafeDiv
Description
Synopsis
- safeDiv :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a
- safeMod :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a
- safeDivMod :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m (a, a)
- safeQuot :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a
- safeRem :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a
- safeQuotRem :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m (a, a)
- class UnifiedSafeDiv (mode :: EvalModeTag) e a (m :: Type -> Type) where
- withBaseSafeDiv :: (SafeDiv e a m => r) -> r
Documentation
safeDiv :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a Source #
Unified safeDiv operation.
This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:
safeDiv @mode a b
safeMod :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a Source #
Unified safeMod operation.
This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:
safeMod @mode a b
safeDivMod :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m (a, a) Source #
Unified safeDivMod
operation.
This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:
safeDivMod @mode a b
safeQuot :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a Source #
Unified safeQuot
operation.
This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:
safeQuot @mode a b
safeRem :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m a Source #
Unified safeRem operation.
This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:
safeRem @mode a b
safeQuotRem :: forall (mode :: EvalModeTag) e a m. (MonadError e m, UnifiedSafeDiv mode e a m) => a -> a -> m (a, a) Source #
Unified safeQuotRem
operation.
This function isn't able to infer the mode, so you need to provide the mode explicitly. For example:
safeQuotRem @mode a b
class UnifiedSafeDiv (mode :: EvalModeTag) e a (m :: Type -> Type) where Source #
A class that provides unified division operations.
We use this type class to help resolve the constraints for SafeDiv.
Methods
withBaseSafeDiv :: (SafeDiv e a m => r) -> r Source #