{-# language Unsafe #-}

module NatOptics.Positive.Unsafe where

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

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