<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments for A Lexical Mistake</title>
	<atom:link href="http://krysole.net/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexicalmistake.com</link>
	<description>Languages; Past, Present and Future</description>
	<pubDate>Thu, 20 Nov 2008 21:47:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>Comment on Haskell and Game Development by Eyal Lotem</title>
		<link>http://alexicalmistake.com/2008/10/haskell-and-game-development/#comment-47</link>
		<dc:creator>Eyal Lotem</dc:creator>
		<pubDate>Tue, 28 Oct 2008 21:37:23 +0000</pubDate>
		<guid isPermaLink="false">http://alexicalmistake.com/?p=50#comment-47</guid>
		<description>Look at FRP:

Reactive animations:
http://conal.net/fran/tutorial.htm

The above work set the corner stone of FRP.

The Yampa arcade:
http://www.haskell.org/yale/papers/haskell-workshop03/yampa-arcade.pdf

I think the Yampa arcade (and Yampa in general) are not quite functional as we'd like, but they are an interesting approach.

The idea of FRP is that pure functional values CAN be used to denote dynamic things.</description>
		<content:encoded><![CDATA[<p>Look at FRP:</p>
<p>Reactive animations:<br />
<a href="http://conal.net/fran/tutorial.htm" rel="nofollow">http://conal.net/fran/tutorial.htm</a></p>
<p>The above work set the corner stone of FRP.</p>
<p>The Yampa arcade:<br />
<a href="http://www.haskell.org/yale/papers/haskell-workshop03/yampa-arcade.pdf" rel="nofollow">http://www.haskell.org/yale/papers/haskell-workshop03/yampa-arcade.pdf</a></p>
<p>I think the Yampa arcade (and Yampa in general) are not quite functional as we&#8217;d like, but they are an interesting approach.</p>
<p>The idea of FRP is that pure functional values CAN be used to denote dynamic things.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell and Game Development by Lorenz Pretterhofer</title>
		<link>http://alexicalmistake.com/2008/10/haskell-and-game-development/#comment-46</link>
		<dc:creator>Lorenz Pretterhofer</dc:creator>
		<pubDate>Wed, 22 Oct 2008 21:22:06 +0000</pubDate>
		<guid isPermaLink="false">http://alexicalmistake.com/?p=50#comment-46</guid>
		<description>Yes, I will have to check those out at some point. And speaking of FRP, I actually considered it for my game project before I started this stuff, but not understanding Arrows and due to the frametime delta mechanism being a little strange (from my perspective) I decided to have a crack at a conventional engine first.

When I get to the postmortem however, I fully intend to have another look at the FRP architecture.</description>
		<content:encoded><![CDATA[<p>Yes, I will have to check those out at some point. And speaking of FRP, I actually considered it for my game project before I started this stuff, but not understanding Arrows and due to the frametime delta mechanism being a little strange (from my perspective) I decided to have a crack at a conventional engine first.</p>
<p>When I get to the postmortem however, I fully intend to have another look at the FRP architecture.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell and Game Development by Simon Michael</title>
		<link>http://alexicalmistake.com/2008/10/haskell-and-game-development/#comment-45</link>
		<dc:creator>Simon Michael</dc:creator>
		<pubDate>Wed, 22 Oct 2008 18:42:48 +0000</pubDate>
		<guid isPermaLink="false">http://alexicalmistake.com/?p=50#comment-45</guid>
		<description>Hi Lorenz, thanks for exploring this, please continue. I've looked at a few of the haskell games (on hackage) and one game framework (FunGEN) for ideas. It might be instructive to see and compare your evolving code attempts. The OO approach seems natural (and newspeak seems very promising) but natural-feeling functional solutions still seem possible. Maybe they will look like functional reactive programming. I wonder.</description>
		<content:encoded><![CDATA[<p>Hi Lorenz, thanks for exploring this, please continue. I&#8217;ve looked at a few of the haskell games (on hackage) and one game framework (FunGEN) for ideas. It might be instructive to see and compare your evolving code attempts. The OO approach seems natural (and newspeak seems very promising) but natural-feeling functional solutions still seem possible. Maybe they will look like functional reactive programming. I wonder.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Experiments in Emacs by Lorenz Pretterhofer</title>
		<link>http://alexicalmistake.com/2008/07/experiments-in-emacs/#comment-44</link>
		<dc:creator>Lorenz Pretterhofer</dc:creator>
		<pubDate>Wed, 22 Oct 2008 02:26:11 +0000</pubDate>
		<guid isPermaLink="false">http://krysole.net/2008/07/26/experiments-in-emacs/#comment-44</guid>
		<description>Hi Bob, 

Yeah, I found some of that a little while back which definitely help a lot (before I switched to Linux as my primary OS...unrelated reasons), and the aspell thing is actually designed as a replacement for ispell on all platforms (Linux's will quite often just symlink them).

The HOME trick is useful for working with the shell buffer as well, which doesn't like spaces in the path (although cygwin itself doesn't seem to care!?).

Either way, thanks for the input, hopefully it will help anyone reading this in the future.

-- Lorenz</description>
		<content:encoded><![CDATA[<p>Hi Bob, </p>
<p>Yeah, I found some of that a little while back which definitely help a lot (before I switched to Linux as my primary OS&#8230;unrelated reasons), and the aspell thing is actually designed as a replacement for ispell on all platforms (Linux&#8217;s will quite often just symlink them).</p>
<p>The HOME trick is useful for working with the shell buffer as well, which doesn&#8217;t like spaces in the path (although cygwin itself doesn&#8217;t seem to care!?).</p>
<p>Either way, thanks for the input, hopefully it will help anyone reading this in the future.</p>
<p>&#8211; Lorenz</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell and Game Development by Lorenz Pretterhofer</title>
		<link>http://alexicalmistake.com/2008/10/haskell-and-game-development/#comment-43</link>
		<dc:creator>Lorenz Pretterhofer</dc:creator>
		<pubDate>Tue, 21 Oct 2008 03:02:04 +0000</pubDate>
		<guid isPermaLink="false">http://alexicalmistake.com/?p=50#comment-43</guid>
		<description>I stumbled onto this post on the records syntax. I think it summarizes my issues with the syntax quite nicely.

&lt;a href="http://bloggablea.wordpress.com/2007/04/24/haskell-records-considered-grungy/" rel="nofollow"&gt;Haskell Records Considered Grungy&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>I stumbled onto this post on the records syntax. I think it summarizes my issues with the syntax quite nicely.</p>
<p><a href="http://bloggablea.wordpress.com/2007/04/24/haskell-records-considered-grungy/" rel="nofollow">Haskell Records Considered Grungy</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell and Game Development by Lorenz Pretterhofer</title>
		<link>http://alexicalmistake.com/2008/10/haskell-and-game-development/#comment-41</link>
		<dc:creator>Lorenz Pretterhofer</dc:creator>
		<pubDate>Tue, 21 Oct 2008 00:45:48 +0000</pubDate>
		<guid isPermaLink="false">http://alexicalmistake.com/?p=50#comment-41</guid>
		<description>I don't believe I've quite gotten to the point where I think I'm comfortable writing a more game specific type (monad or otherwise) yet, but it's definitely an interesting prospect. It might actually have more far flung implications that you mentioned once you move the IO into higher level tasks, and just expose those to the game/engine type.

As I understand it the IO types are "more or less" just renamed ST types anyway, allowing true IO (externally controlled side effects) to be separated from the pure functional core. Since real side effects which are type constrained so they don't escape a block of code are, from the outside at least, still referentially transparent and therefore functional. But your right, as the code base grows, some guarantees about IO could become essential.

Right now I'm actually more concerned with the overhead involved in using monadic code like readIORef. Eventually I think I'll learn the operations involved in combining this kind of code better, but for now I think it might be more useful just to get something working and go from there.


Heh, that tying the know thing reminds of a post that appeared on planet haskell a while back...&lt;a href="https://www.joachim-breitner.de/blog/archives/308-guid.html" rel="nofollow"&gt;Infinite loops in Haskell&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>I don&#8217;t believe I&#8217;ve quite gotten to the point where I think I&#8217;m comfortable writing a more game specific type (monad or otherwise) yet, but it&#8217;s definitely an interesting prospect. It might actually have more far flung implications that you mentioned once you move the IO into higher level tasks, and just expose those to the game/engine type.</p>
<p>As I understand it the IO types are &#8220;more or less&#8221; just renamed ST types anyway, allowing true IO (externally controlled side effects) to be separated from the pure functional core. Since real side effects which are type constrained so they don&#8217;t escape a block of code are, from the outside at least, still referentially transparent and therefore functional. But your right, as the code base grows, some guarantees about IO could become essential.</p>
<p>Right now I&#8217;m actually more concerned with the overhead involved in using monadic code like readIORef. Eventually I think I&#8217;ll learn the operations involved in combining this kind of code better, but for now I think it might be more useful just to get something working and go from there.</p>
<p>Heh, that tying the know thing reminds of a post that appeared on planet haskell a while back&#8230;<a href="https://www.joachim-breitner.de/blog/archives/308-guid.html" rel="nofollow">Infinite loops in Haskell</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell and Game Development by Sam Danielson</title>
		<link>http://alexicalmistake.com/2008/10/haskell-and-game-development/#comment-40</link>
		<dc:creator>Sam Danielson</dc:creator>
		<pubDate>Mon, 20 Oct 2008 21:12:39 +0000</pubDate>
		<guid isPermaLink="false">http://alexicalmistake.com/?p=50#comment-40</guid>
		<description>&#62; Please, don’t use IORefs in this way. Instead, give objects unique IDs, and maintain a table of relationships between objects by their unique ID.

IOW to turn the game state into something like a relational database. It's good for serialization e.g. one could implement save game via "deriving (Read)", but slow for lookups. It fits the idea of expressions quite well and the flexibility is great but for a real game wouldn't it be better if relationships were by pointer under the covers? I imagine one would create a datatype that lies on top of the expression oriented fkey style database, similar to a view in RDMS terms. As a n00b this hurts my head but it seems like I'm thinking in the right direction. "Tying the knot" appears to be required in the general case.

http://haskell.org/wikisnapshot/TyingTheKnot.html</description>
		<content:encoded><![CDATA[<p>&gt; Please, don’t use IORefs in this way. Instead, give objects unique IDs, and maintain a table of relationships between objects by their unique ID.</p>
<p>IOW to turn the game state into something like a relational database. It&#8217;s good for serialization e.g. one could implement save game via &#8220;deriving (Read)&#8221;, but slow for lookups. It fits the idea of expressions quite well and the flexibility is great but for a real game wouldn&#8217;t it be better if relationships were by pointer under the covers? I imagine one would create a datatype that lies on top of the expression oriented fkey style database, similar to a view in RDMS terms. As a n00b this hurts my head but it seems like I&#8217;m thinking in the right direction. &#8220;Tying the knot&#8221; appears to be required in the general case.</p>
<p><a href="http://haskell.org/wikisnapshot/TyingTheKnot.html" rel="nofollow">http://haskell.org/wikisnapshot/TyingTheKnot.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell and Game Development by Christopher Lane Hinson</title>
		<link>http://alexicalmistake.com/2008/10/haskell-and-game-development/#comment-39</link>
		<dc:creator>Christopher Lane Hinson</dc:creator>
		<pubDate>Mon, 20 Oct 2008 20:27:50 +0000</pubDate>
		<guid isPermaLink="false">http://alexicalmistake.com/?p=50#comment-39</guid>
		<description>Please, don't use IORefs in this way.  Instead, give objects unique IDs, and maintain a table of relationships between objects by their unique ID.

There's a common notion among outsiders and new Haskellers that Haskell "can't handle something as complex as X."  This is absolutely true if you're using the IO monad to do work that is not IO.</description>
		<content:encoded><![CDATA[<p>Please, don&#8217;t use IORefs in this way.  Instead, give objects unique IDs, and maintain a table of relationships between objects by their unique ID.</p>
<p>There&#8217;s a common notion among outsiders and new Haskellers that Haskell &#8220;can&#8217;t handle something as complex as X.&#8221;  This is absolutely true if you&#8217;re using the IO monad to do work that is not IO.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Experiments in Emacs by Bob McCormick</title>
		<link>http://alexicalmistake.com/2008/07/experiments-in-emacs/#comment-38</link>
		<dc:creator>Bob McCormick</dc:creator>
		<pubDate>Mon, 20 Oct 2008 15:34:27 +0000</pubDate>
		<guid isPermaLink="false">http://krysole.net/2008/07/26/experiments-in-emacs/#comment-38</guid>
		<description>I'm not an emacs expert, but I may be able to help you with a couple of your emacs problems.  

* Spell checking:  I don't think Cygwin has ispell, but it does have aspell which is supposedly a dropin replacement.   Run Cygwin setup and make sure you've got aspell installed, then put this in your .emacs file:

  ;; substitute aspell for ispell
  (setq-default ispell-program-name "c:/cygwin/bin/aspell.exe")

* Put Cygwin apps into the Emacs search path:  Put the following in your .emacs:

  (when (file-exists-p "c:/cygwin/bin")
  ;; Add cygwin directories to the emacs search path
  (setq exec-path (cons "C:/cygwin/bin" exec-path))
  (setq exec-path (cons "c:/cygwin/usr/local/bin" exec-path))
  (setenv "PATH" (concat "c:\\cygwin\\bin;" (getenv "PATH")))
  (setenv "PATH" (concat "c:\\cygwin\\usr\\local\\bin;" (getenv "PATH")))

Also, I'm sure by now you've figured out that you can set the HOME environment variable in Windows to change where Emacs looks for your .emacs file right?  I've got mine set to look in c:\cygwin\home\bob. (obviously you'll need to customize based on your cygwin username! )

There are some more Cygwin/Emacs customization advice on the Emacs Wiki: http://www.emacswiki.org/emacs/CygWin</description>
		<content:encoded><![CDATA[<p>I&#8217;m not an emacs expert, but I may be able to help you with a couple of your emacs problems.  </p>
<p>* Spell checking:  I don&#8217;t think Cygwin has ispell, but it does have aspell which is supposedly a dropin replacement.   Run Cygwin setup and make sure you&#8217;ve got aspell installed, then put this in your .emacs file:</p>
<p>  ;; substitute aspell for ispell<br />
  (setq-default ispell-program-name &#8220;c:/cygwin/bin/aspell.exe&#8221;)</p>
<p>* Put Cygwin apps into the Emacs search path:  Put the following in your .emacs:</p>
<p>  (when (file-exists-p &#8220;c:/cygwin/bin&#8221;)<br />
  ;; Add cygwin directories to the emacs search path<br />
  (setq exec-path (cons &#8220;C:/cygwin/bin&#8221; exec-path))<br />
  (setq exec-path (cons &#8220;c:/cygwin/usr/local/bin&#8221; exec-path))<br />
  (setenv &#8220;PATH&#8221; (concat &#8220;c:\\cygwin\\bin;&#8221; (getenv &#8220;PATH&#8221;)))<br />
  (setenv &#8220;PATH&#8221; (concat &#8220;c:\\cygwin\\usr\\local\\bin;&#8221; (getenv &#8220;PATH&#8221;)))</p>
<p>Also, I&#8217;m sure by now you&#8217;ve figured out that you can set the HOME environment variable in Windows to change where Emacs looks for your .emacs file right?  I&#8217;ve got mine set to look in c:\cygwin\home\bob. (obviously you&#8217;ll need to customize based on your cygwin username! )</p>
<p>There are some more Cygwin/Emacs customization advice on the Emacs Wiki: <a href="http://www.emacswiki.org/emacs/CygWin" rel="nofollow">http://www.emacswiki.org/emacs/CygWin</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Haskell and Game Development by Sam Griffin</title>
		<link>http://alexicalmistake.com/2008/10/haskell-and-game-development/#comment-37</link>
		<dc:creator>Sam Griffin</dc:creator>
		<pubDate>Mon, 20 Oct 2008 13:36:34 +0000</pubDate>
		<guid isPermaLink="false">http://alexicalmistake.com/?p=50#comment-37</guid>
		<description>I generally stick my entire program state in one data record (call it GameState, maybe) and then put that in an IORef.  Then I can keep my code as purely functional as possible.  I still haven't figured out a good way to deal with interrupt-driven IO in an elegant way in Haskell.</description>
		<content:encoded><![CDATA[<p>I generally stick my entire program state in one data record (call it GameState, maybe) and then put that in an IORef.  Then I can keep my code as purely functional as possible.  I still haven&#8217;t figured out a good way to deal with interrupt-driven IO in an elegant way in Haskell.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
