tag:blogger.com,1999:blog-21095054941501951962024-03-07T19:13:32.318-08:00Monad NationIt takes a nation of monads to hold us backAaronhttp://www.blogger.com/profile/01035160263121350850noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-2109505494150195196.post-57541852497056958852007-01-06T01:13:00.000-08:002007-01-06T01:33:40.936-08:00A Nice Way to Learn FPOver the past Christmas break I had some free time available and wanted to use it wisely. I decided that I've been flirting long enough with learning functional programming, like learning OCaml and Common Lisp and all that. This time I was going to just jump right in to Haskell. But, why learn just one FP language? I quickly found a tutorial at:<br /><a href="http://halogen.note.amherst.edu/%7Ejdtang/scheme_in_48/tutorial/overview.html"><br />http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html</a><br /><br />that covers an implementation of Scheme in Haskell, <span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span>so you learn both although there's a few features of Scheme that aren't implemented. <br /><br />One of the nice things is that you have a fully working Scheme interpreter so you can play around with it as much as you like. Plus at the end they even mention catamorphisms and anamorphisms and how to write a whole standard library with mostly folds and unfolds.<br /><br />I supplemented that along with the book Haskell The Craft of Functional Programming, which is nice for beginners but wasn't as advanced as I hoped it would be. Ultimately I'm not sure I could recommend it to someone who already knows a programming language fairly well. I also checked out the wikibooks Haskell page at <a href="http://en.wikibooks.org/wiki/Haskell">http://en.wikibooks.org/wiki/Haskell</a> which was a well-written tutorial.<br /><br />Sadly I didn't learn enough over the break to be able to write a real program, but I did learn enough where I could think of some solutions to problems in Haskell. The downside is that when I went back to work coding in C++, I'd see a one line solution in Haskell and would have no way to translate that to C++.<br /><a href="http://en.wikibooks.org/wiki/Haskell"><span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span></a>Aaronhttp://www.blogger.com/profile/01035160263121350850noreply@blogger.com0tag:blogger.com,1999:blog-2109505494150195196.post-34405223036890413692007-01-04T23:36:00.000-08:002007-01-04T23:53:01.516-08:00First postFirst post! As part of my New Year's resolutions, I've decided that I'm going to get a master's degree in computer science. This means either finishing my thesis or taking some comprehensive exams in 3 areas:<br />1) Data structures<br />2) Operating systems OR Numerical analysis (my choice! yea!)<br />3) Theory<br />Since my thesis is dragging because of work and I'll need to know the above for the CS GRE, why not just take the exams? <br /><br />Here's the first place to stop for some CS GRE knowledge:<br /><a href="http://titanium.bits.googlepages.com/">http://titanium.bits.googlepages.com/</a><br /><span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span><br />That has a bunch of great info.<br /><span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span><br />Also, if you don't know anything about continuations, check out this page:<br /><span style="font-size:100%;"><a href="http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons">http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons</a><br /><br />Educate your mind<br /></span>Aaronhttp://www.blogger.com/profile/01035160263121350850noreply@blogger.com1