[Haskell-beginners] interface/abstract class: what is the haskell way?

Mateusz Kowalczyk fuuzetsu at fuuzetsu.co.uk
Fri Feb 8 11:58:51 CET 2013


Greetings,

I have recently asked for a difference between an interface as we know
it from OOP and a type class in Haskell. Although it's not an answer to
your question, you might find it useful. You can find the conversation
archived on gmane at [1]

[1] - http://comments.gmane.org/gmane.comp.lang.haskell.beginners/11341

On 08/02/13 09:50, Emmanuel Touzery wrote:
> Hello,
> 
>  i wrote two programs in haskell which have the same problem: they
> define a common datatype (let's say Event for instance), and they have
> several modules, each one importing a list of Event from a specific data
> source.
> 
>  So all these modules have a similar api:
> 
> getEvents :: <params> -> IO [Event]
> 
>  And maybe a couple extra functions, more or less the same for each module.
> 
>  In OO, I would make a base class, like EventProvider, with a couple
> abstract methods and in the main class of my app, I would have a list of
> EventProvider and loop over them. That way to add a new EventProvider, I
> would just add the import and an element in that list.
> 
>  Currently in haskell I duplicate the function calls for each provider.
> And because there is no interface constraint, each module has a slightly
> different API.
> 
>  The "obvious" way to do in haskell what I would do in OO would be
> through type classes. However I realize type classes are not quite
> interfaces. I'm wondering what would be the "haskell way" to solve this
> problem?
> 
>  For sure type classes do the job. But is it the idiomatic way of
> solving this problem?
> 
>  Thank you!
> 
> Emmanuel
> 
> 
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
> 



More information about the Beginners mailing list