module Study.Courses.English.Vocabulary.Attitudinals.Model where

import System.Random (StdGen)
import qualified Data.Text as T

data AttitudinalType = PureEmotion | PropositionalEmotion deriving (AttitudinalType -> AttitudinalType -> Bool
(AttitudinalType -> AttitudinalType -> Bool)
-> (AttitudinalType -> AttitudinalType -> Bool)
-> Eq AttitudinalType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AttitudinalType -> AttitudinalType -> Bool
== :: AttitudinalType -> AttitudinalType -> Bool
$c/= :: AttitudinalType -> AttitudinalType -> Bool
/= :: AttitudinalType -> AttitudinalType -> Bool
Eq)

data Attitudinal = Attitudinal
    { Attitudinal -> Text
attitudinalWord :: T.Text
    , Attitudinal -> AttitudinalType
attitudinalType :: AttitudinalType
    , Attitudinal -> Text
attitudinalPositiveMeaning :: T.Text
    , Attitudinal -> Maybe Text
attitudinalNeutralMeaning :: Maybe T.Text
    , Attitudinal -> Maybe Text
attitudinalNegativeMeaning :: Maybe T.Text
    }

instance Eq Attitudinal where
    Attitudinal
x == :: Attitudinal -> Attitudinal -> Bool
== Attitudinal
y = (Attitudinal -> Text
attitudinalWord Attitudinal
x) Text -> Text -> Bool
forall a. Eq a => a -> a -> Bool
== (Attitudinal -> Text
attitudinalWord Attitudinal
y)

type AttitudinalGenerator = StdGen -> (Attitudinal, StdGen)