data Lit = StrLit String | IntLit Int deriving (Show, Eq) data Expr a = Unary String a | Binary a String a | Paren a | Literal Lit deriving (Show, Eq, Functor) newtype Term f = In {out :: f (Term f)} do we have enough here to construct a value of type "Term Expr" where "Expr" is given by "Literal $ StrLit "hello""?