Revision: 11422
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 4, 2009 16:38 by narkisr
Initial Code
-- Enabling the extension {-# OPTIONS -fglasgow-exts #-} -- Equal like class class MEEq a where (=-=) :: a -> a -> Bool -- Instances with no implementation instance MEEq () instance MEEq Bool instance MEEq Int -- The rewrite rule {-# RULES "eq/Bool" (=-=) = eq_Bool :: Bool -> Bool -> Bool "eq/Unit" (=-=) = eq_Unit :: () -> () -> Bool #-} main = do print $ True =-= False print $ () =-= () -- This fails (at runtime!) since we didn't define a rule for it print $ 7 =-= (8 :: Int) -- Makes sure to fail any instance that doesn't have an implementation on compile time {-# RULES "Unable to resolve instance resolution" (=-=) = (=-=) #-}
Initial URL
Initial Description
Haskell uses static dispatch for overloaded methods, in addition it has an extension to write rules that optimize Haskell dispatching code.
Initial Title
Haskell static dispatch rewrite rules
Initial Tags
Initial Language
Java