module HaScalaM.Instances.Ref where

import HaScalaM.Classes.Base
import HaScalaM.Classes.Ref
import HaScalaM.Classes.Term
import HaScalaM.Classes.Type
import HaScalaM.Types.Base
import HaScalaM.Types.Ref
import HaScalaM.Types.Tilde


--------------------------------------------------------------------------- N --

instance Tree SmName
instance Name SmName where
    value :: SmName -> String
value (NAnonymous SmAnonymousRT
SmAnonymousRT)   = String
""
    value (NName SmNameN
SmAnonymousN)         = String
""
    value (NName (SmIndeterminateN String
v)) = String
v
    value (NName SmNameN
SmPlaceholderN)       = String
"_"
    value (NName SmNameN
SmThisN)              = String
"this"
    value (NTName SmNameT
n)                   = SmNameT -> String
forall n. Name n => n -> String
value SmNameT
n
    value (NT'Name SmNameT'
n')                 = SmNameT' -> String
forall n. Name n => n -> String
value SmNameT'
n'


instance Tree SmNameT
instance Name SmNameT
    where value :: SmNameT -> String
value (SmNameT String
v) = String
v
instance NameT SmNameT


instance Tree SmNameT'
instance Name SmNameT'
    where value :: SmNameT' -> String
value (SmNameT' String
v) = String
v
instance NameT' SmNameT'

--------------------------------------------------------------------------- R --

instance Tree SmRef_
instance Ref SmRef_


instance Tree SmRef
instance RefT SmRef


instance Tree SmRef'
instance RefT' SmRef'