{-# language Unsafe #-}

module NatOptics.NonNegative.Unsafe
  (
    NonNegative (..),
  )
  where

import Data.Eq   ( Eq )
import Data.Ord  ( Ord )
import Text.Show ( Show )

newtype NonNegative number = NonNegativeUnsafe{ NonNegative number -> number
number :: number }
    deriving newtype (NonNegative number -> NonNegative number -> Bool
(NonNegative number -> NonNegative number -> Bool)
-> (NonNegative number -> NonNegative number -> Bool)
-> Eq (NonNegative number)
forall number.
Eq number =>
NonNegative number -> NonNegative number -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NonNegative number -> NonNegative number -> Bool
$c/= :: forall number.
Eq number =>
NonNegative number -> NonNegative number -> Bool
== :: NonNegative number -> NonNegative number -> Bool
$c== :: forall number.
Eq number =>
NonNegative number -> NonNegative number -> Bool
Eq, Eq (NonNegative number)
Eq (NonNegative number)
-> (NonNegative number -> NonNegative number -> Ordering)
-> (NonNegative number -> NonNegative number -> Bool)
-> (NonNegative number -> NonNegative number -> Bool)
-> (NonNegative number -> NonNegative number -> Bool)
-> (NonNegative number -> NonNegative number -> Bool)
-> (NonNegative number -> NonNegative number -> NonNegative number)
-> (NonNegative number -> NonNegative number -> NonNegative number)
-> Ord (NonNegative number)
NonNegative number -> NonNegative number -> Bool
NonNegative number -> NonNegative number -> Ordering
NonNegative number -> NonNegative number -> NonNegative number
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall number. Ord number => Eq (NonNegative number)
forall number.
Ord number =>
NonNegative number -> NonNegative number -> Bool
forall number.
Ord number =>
NonNegative number -> NonNegative number -> Ordering
forall number.
Ord number =>
NonNegative number -> NonNegative number -> NonNegative number
min :: NonNegative number -> NonNegative number -> NonNegative number
$cmin :: forall number.
Ord number =>
NonNegative number -> NonNegative number -> NonNegative number
max :: NonNegative number -> NonNegative number -> NonNegative number
$cmax :: forall number.
Ord number =>
NonNegative number -> NonNegative number -> NonNegative number
>= :: NonNegative number -> NonNegative number -> Bool
$c>= :: forall number.
Ord number =>
NonNegative number -> NonNegative number -> Bool
> :: NonNegative number -> NonNegative number -> Bool
$c> :: forall number.
Ord number =>
NonNegative number -> NonNegative number -> Bool
<= :: NonNegative number -> NonNegative number -> Bool
$c<= :: forall number.
Ord number =>
NonNegative number -> NonNegative number -> Bool
< :: NonNegative number -> NonNegative number -> Bool
$c< :: forall number.
Ord number =>
NonNegative number -> NonNegative number -> Bool
compare :: NonNegative number -> NonNegative number -> Ordering
$ccompare :: forall number.
Ord number =>
NonNegative number -> NonNegative number -> Ordering
$cp1Ord :: forall number. Ord number => Eq (NonNegative number)
Ord, Int -> NonNegative number -> ShowS
[NonNegative number] -> ShowS
NonNegative number -> String
(Int -> NonNegative number -> ShowS)
-> (NonNegative number -> String)
-> ([NonNegative number] -> ShowS)
-> Show (NonNegative number)
forall number. Show number => Int -> NonNegative number -> ShowS
forall number. Show number => [NonNegative number] -> ShowS
forall number. Show number => NonNegative number -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NonNegative number] -> ShowS
$cshowList :: forall number. Show number => [NonNegative number] -> ShowS
show :: NonNegative number -> String
$cshow :: forall number. Show number => NonNegative number -> String
showsPrec :: Int -> NonNegative number -> ShowS
$cshowsPrec :: forall number. Show number => Int -> NonNegative number -> ShowS
Show)