[Haskell-beginners] How to model this in haskell,
get rid of my OO thinking?
haskell at lonely-star.org
haskell at lonely-star.org
Mon May 17 23:21:38 EDT 2010
Hi,
I learning haskell and I am trying to understand how model certain
things in it.
As I have been doing a lot of C++ programming so far. Let's imagine we
want to write a game. In the game there are spaceships and rocks (image
something like astroids :) ). Now both spaceships and rocks have a
position and can move. Spaceships can shoot, while rocks can explode.
In C++, I would do (simplified):
class ScreenObject
{
float x,y;
void move(dx,dy){x+=dx;y+=dy;}
};
class Spaceship : public ScreenObject
{
void shoot(){...}
};
class Rocket : public ScreenObject
{
void explode(){...}
};
But what would I do in haskell? Ok, I can define a typeclass
"ScreenObjectType" that has a move function (taking an object, retuning
an moved object).
But I do not want to implement "move" for both Spaceship and Rocket.
Can I somehow give a default implementation for move that works on any
datatype having an "x" and "y" element? Or what would I do?
Can I somehow define a "base datatype" holding a x and y member form
which Spaceship and Rocket derive?
I feel like I am thinking to much OOP here.
But the point is, I guess, that I want to avoid code duplication!
So I guess, it comes down to the questions: How would you model the
scenario described above in haskell?
Thanks!
Nathan
More information about the Beginners
mailing list