Perhaps the problem is that you're trying to build a class hierarchy in Haskell, when class hierarchies just don't really work in Haskell.<p>What about a component oriented design? This is the standard architecture for games anyway.<p>An enemy, actually every <i>entity</i>, would just be a map of components, which can be simple algebraic data types.
The actions can be implemented as a system function with pattern matching or guards, like:<p><pre><code> -- The walking system
walk :: Entity -> Entity
walk e = update entity "position" $ walk' (lookup "position" entity)
walk' (x,y) = (x+1,y)
</code></pre>
In reality systems usually work on more than one component, so you'd have to make actions that work on tuples of components, but you'll figure it out :)