Re: [Haskell-beginners] Translating imperative algorithms to Haskell

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello! Thanks, I'll take a look. I was going to buy Okasaki's book for a very long time, probably I should finally do it :) Best regards, Mikhail On 02/19/2010 11:07 PM, Marc Dominik Migge wrote:
Hi,
I recommend you read John Hughe's article "Why Functional Programming Matters"[1]. As one of his examples he implements alpha-beta-pruning. I'm not really a Haskell expert, but I think the main difference will be in the kind of data structures you use to implement the algorithms. Many people have recommended Chris Okasaki's PhD thesis [2] to me for an in-depth treatment of the topic.
[1]: http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html [2]: http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf
Best regards, Marc
On Fri, Feb 19, 2010 at 9:07 PM, Mikhail Novikov
wrote: Hello!
Four days ago I decided to try to learn Haskell by participating in Google AI Challenge (http://csclub.uwaterloo.ca/contest/). I went with LYAH and Real-World Haskell and I had no problems with functional core of Haskell, as I have lispy background. The problems begun when I tried to move my code to use different kind of decision algorithms, like negascout or flood fill.
I have found a ready made solution for negascout ( http://hackage.haskell.org/packages/archive/game-tree/0.1.0.0/doc/html/src/D...), but I was quite shocked by it's complexity, especially considering the relative easy of imperative algorithm.( http://en.wikipedia.org/wiki/Negascout). IMHO it is just TOO extremely complex and hard to read :/
In flood fill situation is similar - I need to track all the colored squares among 4 lines of recursion and I couldn't find a reasonable way to do it without going to infinite recursion or having lots of duplicates.
So basically, I wonder if there is some generic way to transfer imperative algorithms with local state to functional style without making them overly complex.
Thanks a lot, Mikhail
Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkt+/6YACgkQPHyh4sfuKrkrdgCfaH4/z1RrQX33dtoO1QXWQshl LBUAn18H9/MdMjbGzeTJZ9+bxVYs5tfJ =9ZhZ -----END PGP SIGNATURE-----
participants (1)
-
Mikhail Novikov