-- SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
-- SPDX-License-Identifier: MIT

-- The main goal of this module is breking cyclic dependency:
-- Dataize -> Functions -> Rewriter -> Dataize
-- Here we provide custom type BuildTermFunc and add it to
-- RewriteContext and DataizeContext. Now Dataize and Rewrite depends
-- only on Term module. This allows us to use Rewriter and Dataize in
-- Functions module because Rewriter does not depend on Functions anymore.
module Term where
  
import Yaml
import Matcher
import Ast

data Term = TeExpression Expression | TeAttribute Attribute | TeBytes Bytes

type BuildTermFunc = String -> [ExtraArgument] -> Subst -> Program -> IO Term