curry-base-1.0.0: src/Curry/FlatCurry/Annotated/Typing.hs
{- |
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