{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
-- | Symantic for 'Date'.
module Hcompta.LCC.Sym.Date where

import qualified Prelude ()

import Hcompta.LCC.Posting (Date)
import Language.Symantic

-- * Class 'Sym_Date'
type instance Sym Date = Sym_Date
class Sym_Date (term:: * -> *) where

instance Sym_Date Eval where
instance Sym_Date View where
instance (Sym_Date r1, Sym_Date r2) => Sym_Date (Dup r1 r2) where
instance (Sym_Date term, Sym_Lambda term) => Sym_Date (BetaT term)

instance ClassInstancesFor Date
instance TypeInstancesFor Date
instance (Source src, Inj_Sym ss Date) => ModuleFor src ss Date
instance Gram_Term_AtomsFor src ss g Date

tyDate :: Source src => Inj_Len vs => Type src vs Date
tyDate = tyConst @(K Date) @Date