{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE StandaloneKindSignatures #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}

module Torch.GraduallyTyped.NN.Type where

import Data.Singletons.TH (genSingletons)
import GHC.Generics (Generic)

data HasBias = WithBias | WithoutBias
  deriving stock (HasBias -> HasBias -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: HasBias -> HasBias -> Bool
$c/= :: HasBias -> HasBias -> Bool
== :: HasBias -> HasBias -> Bool
$c== :: HasBias -> HasBias -> Bool
Eq, Eq HasBias
HasBias -> HasBias -> Bool
HasBias -> HasBias -> Ordering
HasBias -> HasBias -> HasBias
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
min :: HasBias -> HasBias -> HasBias
$cmin :: HasBias -> HasBias -> HasBias
max :: HasBias -> HasBias -> HasBias
$cmax :: HasBias -> HasBias -> HasBias
>= :: HasBias -> HasBias -> Bool
$c>= :: HasBias -> HasBias -> Bool
> :: HasBias -> HasBias -> Bool
$c> :: HasBias -> HasBias -> Bool
<= :: HasBias -> HasBias -> Bool
$c<= :: HasBias -> HasBias -> Bool
< :: HasBias -> HasBias -> Bool
$c< :: HasBias -> HasBias -> Bool
compare :: HasBias -> HasBias -> Ordering
$ccompare :: HasBias -> HasBias -> Ordering
Ord, Int -> HasBias -> ShowS
[HasBias] -> ShowS
HasBias -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HasBias] -> ShowS
$cshowList :: [HasBias] -> ShowS
show :: HasBias -> String
$cshow :: HasBias -> String
showsPrec :: Int -> HasBias -> ShowS
$cshowsPrec :: Int -> HasBias -> ShowS
Show, forall x. Rep HasBias x -> HasBias
forall x. HasBias -> Rep HasBias x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep HasBias x -> HasBias
$cfrom :: forall x. HasBias -> Rep HasBias x
Generic)

genSingletons [''HasBias]

deriving instance Show (SHasBias hasBias)

data HasDropout = WithDropout | WithoutDropout
  deriving stock (HasDropout -> HasDropout -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: HasDropout -> HasDropout -> Bool
$c/= :: HasDropout -> HasDropout -> Bool
== :: HasDropout -> HasDropout -> Bool
$c== :: HasDropout -> HasDropout -> Bool
Eq, Eq HasDropout
HasDropout -> HasDropout -> Bool
HasDropout -> HasDropout -> Ordering
HasDropout -> HasDropout -> HasDropout
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
min :: HasDropout -> HasDropout -> HasDropout
$cmin :: HasDropout -> HasDropout -> HasDropout
max :: HasDropout -> HasDropout -> HasDropout
$cmax :: HasDropout -> HasDropout -> HasDropout
>= :: HasDropout -> HasDropout -> Bool
$c>= :: HasDropout -> HasDropout -> Bool
> :: HasDropout -> HasDropout -> Bool
$c> :: HasDropout -> HasDropout -> Bool
<= :: HasDropout -> HasDropout -> Bool
$c<= :: HasDropout -> HasDropout -> Bool
< :: HasDropout -> HasDropout -> Bool
$c< :: HasDropout -> HasDropout -> Bool
compare :: HasDropout -> HasDropout -> Ordering
$ccompare :: HasDropout -> HasDropout -> Ordering
Ord, Int -> HasDropout -> ShowS
[HasDropout] -> ShowS
HasDropout -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HasDropout] -> ShowS
$cshowList :: [HasDropout] -> ShowS
show :: HasDropout -> String
$cshow :: HasDropout -> String
showsPrec :: Int -> HasDropout -> ShowS
$cshowsPrec :: Int -> HasDropout -> ShowS
Show, forall x. Rep HasDropout x -> HasDropout
forall x. HasDropout -> Rep HasDropout x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep HasDropout x -> HasDropout
$cfrom :: forall x. HasDropout -> Rep HasDropout x
Generic)

genSingletons [''HasDropout]

deriving instance Show (SHasDropout hasDropout)