DrIFT-2.4.0: example/TestTerm.out.correct
{- Generated by DrIFT (Automatic class derivations for Haskell) -}
module TestTerm where
import TermRep
{-! global : Term !-}
data SortA = SortA1 SortB | SortA2
data SortB = SortB Integer SortA
{-* Generated by DrIFT : Look, but Don't Touch. *-}
instance Term SortA where
explode (x::SortA) = TermRep (toDyn x, f x, g x) where
f (SortA1 aa) = [explode aa]
f SortA2 = []
g (SortA1 _) xs = case TermRep.fArgs xs of [aa] -> toDyn ((SortA1 (TermRep.fDyn aa))::SortA)
g SortA2 xs = case TermRep.fArgs xs of [] -> toDyn ((SortA2)::SortA)
instance Term SortB where
explode (x::SortB) = TermRep (toDyn x, f x, g x) where
f (SortB aa ab) = [explode aa,explode ab]
g (SortB _ _) xs = case TermRep.fArgs xs of [aa,ab] -> toDyn ((SortB (TermRep.fDyn aa) (TermRep.fDyn ab))::SortB)
-- Imported from other files :-