{- | Module : $Header$ Description : TODO Copyright : (c) 2017 Finn Teegen License : BSD-3-clause Maintainer : bjp@informatik.uni-kiel.de Stability : experimental Portability : portable TODO -} module Curry.FlatCurry.Annotated.Typing (Typeable(..)) where import Curry.FlatCurry.Annotated.Type class Typeable a where typeOf :: a -> TypeExpr instance Typeable TypeExpr where typeOf = id instance Typeable a => Typeable (AExpr a) where typeOf (AVar a _) = typeOf a typeOf (ALit a _) = typeOf a typeOf (AComb a _ _ _) = typeOf a typeOf (ALet a _ _) = typeOf a typeOf (AFree a _ _) = typeOf a typeOf (AOr a _ _) = typeOf a typeOf (ACase a _ _ _) = typeOf a typeOf (ATyped a _ _) = typeOf a instance Typeable a => Typeable (APattern a) where typeOf (APattern a _ _) = typeOf a typeOf (ALPattern a _) = typeOf a