On Sun, Oct 2, 2011 at 8:45 AM, Du Xi <sdiy...@sjtu.edu.cn> wrote:

> Then again , in typeclass definition how can I express the type "a->b"
> where "a" is the type parameter of the class and "b" is a type deduced from
> the rules defined in each instance of the class, which varies on a
> per-instance basis? e.g.
>
> instance ExampleClass a where
>    f :: a->**SomeTypeWhichIsDifferentInEach**Instance
>
> What I want is some thing like this in C++:
>
> float f(char x){ return 0.1f; }
> int f(double x){ return 1; }


Use TypeFamilies.


{-# LANGUAGE TypeFamilies #}
...
type family FType a :: *
type instance FType Char = Float
type instance FType Double = Int

class ExampleClass a where
  f :: a -> FType a
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to