[Haskell-cafe] no dynamic binding

Graham Klyne GK at ninebynine.org
Tue Sep 21 07:26:41 EDT 2004

I think others have provided the immediate answers to your question, so 
I'll skip that.

But, standing back, you seem to have fallen prey to a misunderstanding I 
made when learning Haskell, thinking that a "class" is directly analogous 
to a class in OO languages.  While there are similarities, the Haskell 
notion of a class is much more restrictive, as you have found.

I wrote a few more notes here:


At 13:48 19/09/04 -0400, Andrew Harris wrote:
>Hi -
>    I have another question.  I am still working on a soccer server and
>thought it would be neat to create command objects that had a
>"toString" method.  Then, I was going to keep a list of these command
>objects and at the right time stringify them and send them to the
>server.  So I created a class with a toString method:
>class ServerCommandClass a where
>       toString :: a -> String
>And then a few instances:
>-- dash command
>data DashCommand =
>      DashCommand { dashpower :: Double }
>instance ServerCommandClass DashCommand where
>          toString c = "(dash " ++ show (dashpower c) ++ ")\n"
>-- move command
>data MoveCommand =
>      MoveCommand { x :: Double,
>                    y :: Double }
>instance ServerCommandClass MoveCommand where
>          toString c = "(move " ++ show (x c) ++ " " ++ show (y c) ++ ")\n"
>    The problem is, I am not quite sure how to describe a *list* of
>command objects where the list could have both DashCommands and
>MoveCommands in it.  Ideally the list could contain both, and then for
>each item in the list I could call the toString method.
>    I was reading Simon Thompson's Haskell: The Craft of Functional
>Programming  and I read that Haskell 98 does not support dynamic
>binding, which (it seems) is what I'm trying to do.  Does anyone have
>a suggestion on an alternative approach?
>Haskell-Cafe mailing list
>Haskell-Cafe at haskell.org

Graham Klyne
For email:

More information about the Haskell-Cafe mailing list