module Antelude.Internal.TypesClasses
(
Bool (..)
, Char
, String
, Int
, Integer
, Float
, Double
, Rational
, Word
, List
, NonEmpty (..)
, Array
, Pair
, Trio
, ByteString
, ByteStringLazy
, Map
, MapLazy
, Text
, TextLazy
, Set
, Seq
, Maybe (..)
, Either (..)
, Result (..)
, Ordering (..)
, ShowS
, ReadS
, IO
, FilePath
, IOError
, Void
, Num ((+), (-), (*))
, Real
, Integral
, Fractional ((/))
, Floating ((**))
, RealFrac
, RealFloat
, Semigroup ((<>))
, Monoid
, Functor (..)
, Alternative (empty, (<|>))
, Applicative (..)
, Monad (..)
, MonadIO (..)
, MonadPlus
, MonadFail
, Eq (..)
, Ord ((<), (>), (<=), (>=))
, Enum
, Bounded
, Foldable
, Traversable
, Show (show, showList)
, Read
) where
import safe Control.Applicative ( Alternative (..) )
import safe Control.Monad ( MonadPlus (..) )
import safe Control.Monad.IO.Class ( MonadIO (..) )
import safe Data.Array ( Array )
import safe qualified Data.ByteString as BS ( ByteString )
import safe qualified Data.ByteString.Lazy as BL ( ByteString )
import safe Data.List.NonEmpty ( NonEmpty (..) )
import safe qualified Data.Map as MapL ( Map )
import safe qualified Data.Map.Strict as MapS ( Map )
import safe Data.Sequence ( Seq (..) )
import safe Data.Set ( Set )
import safe qualified Data.Text as TS ( Text )
import safe qualified Data.Text.Lazy as TL ( Text )
import safe Data.Void ( Void )
import safe Prelude
( Applicative (..)
, Bool (..)
, Bounded (..)
, Char
, Double
, Either (..)
, Enum (..)
, Eq (..)
, FilePath
, Float
, Floating (..)
, Foldable (..)
, Fractional (..)
, Functor (..)
, IO
, IOError
, Int
, Integer
, Integral (..)
, Maybe (..)
, Monad (..)
, MonadFail (..)
, Monoid (..)
, Num (..)
, Ord (..)
, Ordering (..)
, Rational
, Read (..)
, ReadS
, Real (..)
, RealFloat (..)
, RealFrac (..)
, Semigroup (..)
, Show (..)
, ShowS
, String
, Traversable (..)
, Word
)
type List a = [a]
type Pair a b = (a, b)
type Trio a b c = (a, b, c)
type Text = TS.Text
type ByteString = BS.ByteString
type TextLazy = TL.Text
type ByteStringLazy = BL.ByteString
type Map key val = MapS.Map key val
type MapLazy key val = MapL.Map key val
data Result err ok
= Err err
| Ok ok
deriving (Result err ok -> Result err ok -> Bool
(Result err ok -> Result err ok -> Bool)
-> (Result err ok -> Result err ok -> Bool) -> Eq (Result err ok)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall err ok.
(Eq err, Eq ok) =>
Result err ok -> Result err ok -> Bool
$c== :: forall err ok.
(Eq err, Eq ok) =>
Result err ok -> Result err ok -> Bool
== :: Result err ok -> Result err ok -> Bool
$c/= :: forall err ok.
(Eq err, Eq ok) =>
Result err ok -> Result err ok -> Bool
/= :: Result err ok -> Result err ok -> Bool
Eq, Eq (Result err ok)
Eq (Result err ok) =>
(Result err ok -> Result err ok -> Ordering)
-> (Result err ok -> Result err ok -> Bool)
-> (Result err ok -> Result err ok -> Bool)
-> (Result err ok -> Result err ok -> Bool)
-> (Result err ok -> Result err ok -> Bool)
-> (Result err ok -> Result err ok -> Result err ok)
-> (Result err ok -> Result err ok -> Result err ok)
-> Ord (Result err ok)
Result err ok -> Result err ok -> Bool
Result err ok -> Result err ok -> Ordering
Result err ok -> Result err ok -> Result err ok
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 err ok. (Ord err, Ord ok) => Eq (Result err ok)
forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Bool
forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Ordering
forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Result err ok
$ccompare :: forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Ordering
compare :: Result err ok -> Result err ok -> Ordering
$c< :: forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Bool
< :: Result err ok -> Result err ok -> Bool
$c<= :: forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Bool
<= :: Result err ok -> Result err ok -> Bool
$c> :: forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Bool
> :: Result err ok -> Result err ok -> Bool
$c>= :: forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Bool
>= :: Result err ok -> Result err ok -> Bool
$cmax :: forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Result err ok
max :: Result err ok -> Result err ok -> Result err ok
$cmin :: forall err ok.
(Ord err, Ord ok) =>
Result err ok -> Result err ok -> Result err ok
min :: Result err ok -> Result err ok -> Result err ok
Ord, ReadPrec [Result err ok]
ReadPrec (Result err ok)
Int -> ReadS (Result err ok)
ReadS [Result err ok]
(Int -> ReadS (Result err ok))
-> ReadS [Result err ok]
-> ReadPrec (Result err ok)
-> ReadPrec [Result err ok]
-> Read (Result err ok)
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
forall err ok. (Read err, Read ok) => ReadPrec [Result err ok]
forall err ok. (Read err, Read ok) => ReadPrec (Result err ok)
forall err ok. (Read err, Read ok) => Int -> ReadS (Result err ok)
forall err ok. (Read err, Read ok) => ReadS [Result err ok]
$creadsPrec :: forall err ok. (Read err, Read ok) => Int -> ReadS (Result err ok)
readsPrec :: Int -> ReadS (Result err ok)
$creadList :: forall err ok. (Read err, Read ok) => ReadS [Result err ok]
readList :: ReadS [Result err ok]
$creadPrec :: forall err ok. (Read err, Read ok) => ReadPrec (Result err ok)
readPrec :: ReadPrec (Result err ok)
$creadListPrec :: forall err ok. (Read err, Read ok) => ReadPrec [Result err ok]
readListPrec :: ReadPrec [Result err ok]
Read, Int -> Result err ok -> ShowS
[Result err ok] -> ShowS
Result err ok -> String
(Int -> Result err ok -> ShowS)
-> (Result err ok -> String)
-> ([Result err ok] -> ShowS)
-> Show (Result err ok)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall err ok. (Show err, Show ok) => Int -> Result err ok -> ShowS
forall err ok. (Show err, Show ok) => [Result err ok] -> ShowS
forall err ok. (Show err, Show ok) => Result err ok -> String
$cshowsPrec :: forall err ok. (Show err, Show ok) => Int -> Result err ok -> ShowS
showsPrec :: Int -> Result err ok -> ShowS
$cshow :: forall err ok. (Show err, Show ok) => Result err ok -> String
show :: Result err ok -> String
$cshowList :: forall err ok. (Show err, Show ok) => [Result err ok] -> ShowS
showList :: [Result err ok] -> ShowS
Show)
instance Functor (Result err) where
fmap :: (okA -> okB) -> Result err okA -> Result err okB
fmap :: forall a b. (a -> b) -> Result err a -> Result err b
fmap okA -> okB
_ (Err err
err) = err -> Result err okB
forall err ok. err -> Result err ok
Err err
err
fmap okA -> okB
fn (Ok okA
ok) = okB -> Result err okB
forall err ok. ok -> Result err ok
Ok (okA -> okB
fn okA
ok)
instance Applicative (Result err) where
pure :: ok -> Result err ok
pure :: forall a. a -> Result err a
pure = ok -> Result err ok
forall err ok. ok -> Result err ok
Ok
(<*>) :: Result err (okA -> okB) -> Result err okA -> Result err okB
Err err
err <*> :: forall a b. Result err (a -> b) -> Result err a -> Result err b
<*> Result err okA
_ = err -> Result err okB
forall err ok. err -> Result err ok
Err err
err
Ok okA -> okB
okFn <*> Result err okA
ok = (okA -> okB) -> Result err okA -> Result err okB
forall a b. (a -> b) -> Result err a -> Result err b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap okA -> okB
okFn Result err okA
ok
instance Monad (Result err) where
(>>=) :: Result err okA -> (okA -> Result err okB) -> Result err okB
Err err
err >>= :: forall a b. Result err a -> (a -> Result err b) -> Result err b
>>= okA -> Result err okB
_ = err -> Result err okB
forall err ok. err -> Result err ok
Err err
err
Ok okA
ok >>= okA -> Result err okB
fn = okA -> Result err okB
fn okA
ok