<div dir="ltr">My free-game package has Gloss-like but far more generalized APIs[0].<br><br>When you define some <span style="color: rgb(0, 0, 0); font-family: Arial; font-size: 13.63636302947998px; line-height: 16.80000114440918px;">series of instructions to draw something, you can move then, turn them, or compose them without touching the insides!</span><br><br>[0] http://hackage.haskell.org/package/free-game-1.0.1/docs/FreeGame.html#t:Picture2D<div><br>2014年1月31日金曜日 21時19分22秒 UTC+9 Alexander Berntsen:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">-----BEGIN PGP SIGNED MESSAGE-----
<br>Hash: SHA256
<br>
<br>I need:
<br>- -2D graphics (preferably with simple shapes available)
<br>- -menus (I can make menus myself with shapes though)
<br>- -simple audio
<br>- -fonts (better than Gloss at least)
<br>- -keyboard input
<br>- -networking (simple direct connections between two computers)
<br>
<br>I need to be able to express my game system as declaratively as
<br>possible[0].
<br>
<br>If the library is based on SDL/OpenGL, that would be nice[1]. This is,
<br>however, not necessary.
<br>
<br>What game libraries are the most mature and adequate for this? The
<br>only library I have used previously with Haskell is Gloss. I am not
<br>experienced in FRP, though I have read about and somewhat groked the
<br>point. I am willing to learn an FRP library.
<br>
<br>
<br>[0]  I am writing it as part of a thesis in which I will look at the
<br>modularity and expressiveness of purely functional programming
<br>compared to object-oriented programming. Writing code that is
<br>technically purely functional, but in practice looks like imperative
<br>code, is sub-optimal.
<br>[1]  For the thesis I am writing, I am implementing a C++ version of
<br>the same game. This will probably use SDL 2.0 and OpenGL bindings. If
<br>the Haskell version could use libraries based on that, this would make
<br>it easier for me to write my thesis. I.e., I would not have to spend
<br>time justifying that the modularity and expressiveness I am
<br>investigating is due to the chosen languages and programming
<br>paradigms, and not the libraries I use.
<br>- -- 
<br>Alexander
<br><a href="javascript:" target="_blank" gdf-obfuscated-mailto="6-Gv82PevSQJ" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">alex...@plaimi.net</a>
<br><a href="http://plaimi.net/~alexander" target="_blank" onmousedown="this.href='http://www.google.com/url?q\75http%3A%2F%2Fplaimi.net%2F~alexander\46sa\75D\46sntz\0751\46usg\75AFQjCNFHt8fFHQc7DrDx3oYU01m7Y_mIOQ';return true;" onclick="this.href='http://www.google.com/url?q\75http%3A%2F%2Fplaimi.net%2F~alexander\46sa\75D\46sntz\0751\46usg\75AFQjCNFHt8fFHQc7DrDx3oYU01m7Y_mIOQ';return true;">http://plaimi.net/~alexander</a>
<br>-----BEGIN PGP SIGNATURE-----
<br>Version: GnuPG v2.0.22 (GNU/Linux)
<br>Comment: Using GnuPG with Thunderbird - <a href="http://www.enigmail.net/" target="_blank" onmousedown="this.href='http://www.google.com/url?q\75http%3A%2F%2Fwww.enigmail.net%2F\46sa\75D\46sntz\0751\46usg\75AFQjCNEmzvPO3jS2yzcUMn8rNiYnCtPc-g';return true;" onclick="this.href='http://www.google.com/url?q\75http%3A%2F%2Fwww.enigmail.net%2F\46sa\75D\46sntz\0751\46usg\75AFQjCNEmzvPO3jS2yzcUMn8rNiYnCtPc-g';return true;">http://www.enigmail.net/</a>
<br>
<br>iF4EAREIAAYFAlLrlMoACgkQRtClrX<wbr>BQc7VkiAEAnEbfjiSLovcXttmjpdD5<wbr>OSFI
<br>uEMBVBJdWonY9ZMPIc8BAIAQn+<wbr>YMRvGILgb8WmuB9oTWJDVZfqDMyB47<wbr>qzjyfimO
<br>=YGLW
<br>-----END PGP SIGNATURE-----
<br>______________________________<wbr>_________________
<br>Haskell-Cafe mailing list
<br><a href="javascript:" target="_blank" gdf-obfuscated-mailto="6-Gv82PevSQJ" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">Haskel...@haskell.org</a>
<br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank" onmousedown="this.href='http://www.google.com/url?q\75http%3A%2F%2Fwww.haskell.org%2Fmailman%2Flistinfo%2Fhaskell-cafe\46sa\75D\46sntz\0751\46usg\75AFQjCNHiVycCM53czUVzPma4Fkb_wPqP2A';return true;" onclick="this.href='http://www.google.com/url?q\75http%3A%2F%2Fwww.haskell.org%2Fmailman%2Flistinfo%2Fhaskell-cafe\46sa\75D\46sntz\0751\46usg\75AFQjCNHiVycCM53czUVzPma4Fkb_wPqP2A';return true;">http://www.haskell.org/<wbr>mailman/listinfo/haskell-cafe</a>
<br></blockquote></div></div>