packages feed

QuickAnnotate-0.1: QuickAnnotate.hs

{-# LANGUAGE FlexibleInstances  #-}
{-# LANGUAGE IncoherentInstances #-}
{-# LANGUAGE OverlappingInstances #-}

module QuickAnnotate where 

type Loc = String           

class Annotatable a  where        
  annotate :: Loc -> a -> a 

instance Annotatable a where
  annotate _ =  id

instance Annotatable b => Annotatable (a -> b) where
  annotate l f = \x -> annotate l (f x)