On Mar 10, 2013, at 11:47 AM, Peter Caspers <pcaspers1...@gmail.com> wrote:
> Thank you all for your answers, this helps a lot. To clarify my last point ... > >>> Also again, taking this way I can not provide several constructors taking >>> inputs of different types, can I ? >> Sorry, didn't get what you mean here. > > In C++ it is perfectly normal to have overloaded functions like > > f : Int -> Int -> Int > f : Int -> Char -> Int > > in coexistence, because the compiler can infer (at compile time) what > function to call by looking at the arguments types. > > In Haskell I think this is not possible simply due to the flexibility given > by partial function application, i.e. > > f 5 > > would not be well defined any more, it could be Int -> Int or Char -> Int. Well, that's what typeclasses are for. class F a where f :: Int -> a -> Int instance F Int where f = ... instance F Char where f = ... ghci> :t f 5 ghci> f 5 :: (F a) => a -> Int _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe