Miguel Mitrofanov schrieb:
-- {-# LANGUAGE FunctionalDependencies#-}
-- {-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}
module Register where
-- class Register a r | a -> r
class Register a where
    type R a
-- instance Register Int Int
instance Register Int where
    type R Int = Int
-- instance Register Float Float
instance Register Float where
    type R Float = Float
-- instance (Register a1 r1, Register a2 r2) => Register (a1, a2) (r1, r2)
instance (Register a, Register b) => Register (a, b) where
    type R (a, b) = (R a, R b)

So type functions are undecidable by default?

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to