Don Stewart wrote:
If you were going to implement Tetris in Haskell, how would you do it?
(For that matter, has anybody already *done* it? It would probably make
a nice example program...)
OpenGL or Gtk2Hs seem the best options.
OK, well I'll have a go at seeing if I can put something together with
(Nitpick: Don't you need Gtk2hs in order to *use* OpenGL? I mean, you
have to open a window to render into somehow, and that's outside the
2. How do you implement a program that is fundamentally about state
mutation in a programming language which abhors state mutation?
Its not clear games are fundamentally about mutation, anymore than, say,
window managers are. State we do with monads.
Hmm. On reflection, Tetris is probably a poor example of this. It has a
fairly small, simple state that you can easily manipulate purely
functionally. But if you imagine, say, an FPS game, where you have
(possibly multiple) players running around, NPCs running after them,
possibly a nontrivial physics engine, possibly a nontrivial AI system,
possibly nontrivial scripted sequences happening... how do you *do* all
that in Haskell?
Check the thesis on Frag for a pure approach, or just use StateT IO.
Indeed, Frag is interesting because it conclusively demonstrates that
this can be done in Haskell (by doing it!) However, all the material
I've read about it is unfortunately utterly incomprehensible. I still
have no idea how it is possible to build such a highly interactive
system in a language which strongly discourages interactivity...
Haskell-Cafe mailing list