On Fri, 2009-02-13 at 13:25 +0300, Eugene Kirpichov wrote: > class Foobar a b where > foobar :: a -> b -> Int > > instance Foobar String Int where ... > instance Foobar Int String where ...
But we typically do not to this. It's ugly. Classes work nicely when there is some kind of parametrisation going on, where a function can work with any instance of some interface. Ad-hoc overloading in the style of Java/C++ just isn't done, even though it can be encoded by the above trick. In the simple case just us a different name. If you would have lots of variations then consider other approaches like passing a data type containing some of the arguments (since that can encode alternatives). Duncan > 2009/2/13 Daniel Kraft <d...@domob.eu>: > > Hi, > > > > I just came across a problem like this: Suppose I've got two related > > functions that do similar things, and I want to call them the same... Like > > in: > > > > foobar :: String -> Int -> Int > > foobar :: Int -> String -> Int > > > > (Bad example, but I hope you got the point.) > > > > Is this kind of overloading (instead of the polymorphism based overloading) > > possible in Haskell? Namely to have two functions with the same name but > > different signatures so they could be distinguished by a call's parameters? > > I fear not... So I guess I have to name the functions differently, right? > > > > Thanks, > > Daniel _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe