<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.atalasoft.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rick Minerich's Development Wonderland : recursion</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/tags/recursion/default.aspx</link><description>Tags: recursion</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>F# Discoveries This Week 05/02/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx</link><pubDate>Sun, 02 May 2010 21:43:06 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20609</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20609.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20609</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20609</wfw:comment><description>&lt;p&gt;Back this week with another huge batch of F# links.&amp;#160; While there’s way too much great stuff to mention, my favorite this week is by a mysterious blogger known only as James.&amp;#160; His heat transfer model is short, sweet and very well explained.&lt;/p&gt;  &lt;p&gt;If you’re around Boston tomorrow (Monday) be sure to check our F# panel for .NET Rocks!&amp;#160; With over 100 people already signed up, it’s sure to be a great time.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://vs2010roadtripboston.eventbrite.com/"&gt;The .NET Rocks! Visual Studio Road Trip – F# Edition in Boston (5/3/2010)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;Carl and Richard are loading up the DotNetMobile (a 30 foot RV) and driving to your town again to show off the latest and greatest in Visual Studio 2010 and .NET 4.0! This stop will include an intro to F# and a special topic panel discussion on F# featuring New England F# User leaders.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.drdobbs.com/go-parallel/article/showArticle.jhtml?articleID=224400710"&gt;Rob Knies’ F#: Putting the 'Fun' into 'Functional' (On Dr. Dobbs)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&amp;quot;In the F# team,&amp;quot; says Syme, a principal researcher at Microsoft Research Cambridge, &amp;quot;We say, 'F is for Fun.' F# enables users to write simple code to solve complex problems. Programming with F# really does make many programming tasks simpler, and our users have consistently reported that they've found using the language enjoyable.&amp;quot;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://thecodedecanter.wordpress.com/2010/04/30/modelling-the-2d-heat-equation-in-f-using-100-lines-of-code/"&gt;James’s Modelling heat transfer in F# using 100 lines of code&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;In this post I’m going to show how we can model the heat equation succinctly in F#. I’m going to consider the two-dimensional case and approximate the solution at discrete spatial mesh points and at discrete time periods.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!1910.entry"&gt;Brian McNamara’s Game programming in F# (with Silverlight and WPF)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;I wanted to learn more about Silverlight, WPF, and Xaml (in the context of F#, of course), so I wrote a fun little game you can play in your browser (or on your desktop).&amp;#160; It’s a knock-off of a dozen other similar games, as you can probably tell from this screenshot&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blog.martindoms.com/2010/04/28/implementing-the-mandelbrot-set-in-f/"&gt;Martin Doms’s Implementing the Mandelbrot set in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;One of my favourite things to do when learning a new language (or graphics package for that matter) is to write an implementation of a Mandelbrot set viewer. So here’s my F# version, annotated to help out anyone who is trying to get to know this language.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/mulambda/archive/2010/05/01/value-restriction-in-f.aspx"&gt;Dmitry Lomov’s Finer Points of F# Value Restriction&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Type inference algorithms are a fascinating topic – there is an interesting and beautiful theory behind them. Today we will consider one interesting aspect of type inference in F# - it might give you a glimpse of what kind of challenges coming up with a good algorithm in this space presents, and hopefully explain away a stumbling block that F# developers occasionally encounter. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bitbucket.org/riles01/frank/wiki/Home"&gt;Frank is a functional reactive request/response engine for .NET applications (written in F#)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Frank is inspired by the Ruby dynamic duo of Rack and Sinatra and aims to provide the simplicity of those frameworks but utilizing the powerful functional reactive paradigm for asynchronous processing.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stevegilham.blogspot.com/2010/04/launching-f-web-application-inside.html"&gt;Steve Gilham’s Launching an F# web application inside VS2010 as if it were C#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is a follow-up to my comments on VS launcher for F# web apps, where I can put an example of the changed markup to the F# class library project to make it act like a web project and launch a browser with your Default.aspx page when you hit F5.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.trelford.com/blog/post/UML-Sequence-Diagram-F-Script.aspx"&gt;Phillip Trelford’s UML Sequence Diagram: F# Script&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;Yesterday I fancied moving some hand drawn diagrams to mouse drawn form; but instead found myself battling against a somewhat stubborn and forgetful modelling tool. It left me wondering if there might be an easier way to do this; perhaps by separating the concern of model description from layout.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/04/distributed-hash-table-dht-in-f.html"&gt;Daniel Mohl’s A Distributed Hash Table (DHT) in F#: Recursion and Pattern Matching&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The simplest implementation defined in the Chord Protocol requires that each node only know about its successor node.&amp;#160; The circle of nodes, joined by each successor node association, makes up the node cluster. In order for a node to become part of the node cluster, it must execute a join request to any arbitrary node in the cluster.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/04/interacting-with-rabbitmq-via-f-and.html"&gt;Daniel Mohl’s Interacting with RabbitMQ via F# and Symbiote&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;Last week, I showed how easy it is to talk to CouchDB with F# and Symbiote.&amp;#160; In this post, I'll show how you can start interacting with RabbitMQ by adding an additional dozen or so lines of code.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.navision-blog.de/2010/04/24/solving-kata-yahtzee-with-fsharp-and-naturalspec/"&gt;Steffen Forkmann’s Solving KataYahtzee with F# and NaturalSpec&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Today I’m starting a new blog post series about solving code katas in F# and with the help of my NaturalSpec project. A code kata is a programming exercise which helps to improve your skills through practice and repetition.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://strangelights.com/blog/archive/2010/04/18/1659.aspx"&gt;Robert Pickering’s Strings and F# Immutable Lists&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The aim of the article is to show that this is not the case, or at least it’s not as black and white as you may think. Specifically we’re going to compare how.NET strings differ considerable in performance characteristics to F#’s immutable lists. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://vimeo.com/skaggles/videos/sort:date"&gt;Andre Burdette’s F# Screencast Series&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is the first of future screencasts that I am doing regarding F# programming. In this screencast I show how to use values and functions in the F# language. Enjoy! &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/04/spell-binding-tale-of-three-recursions.html"&gt;Neil Carrier’s A Spell-Binding Tale of Three Recursions&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;Tail recursive functions often involve accumulators, continuations, and other values which are not really of concern to the ultimate users of those functions. These can often be curried away or otherwise hidden from the ultimate user. This post looks at three obvious techniques for doing so (there are some more that are less obvious), the differences between the three techniques, etc.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/04/driving-range-pooled-allocator.html"&gt;Neil Carrier’s Driving Range Pooled Allocator&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Large numbers of small allocations can be brutal on a memory management system, especially in terms of CPU time (and in terms of fragmentation on non-GC systems). This post presents an F# implementation of a pooling algorithm I’ve used for many years, and in various languages from C onwards, to solve this problem.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Julien Ortin’s Technical analysis indicators in F# – &lt;a href="http://lepensemoi.free.fr/index.php/2010/04/28/technical-analysis-indicators-in-f-misc"&gt;Misc&lt;/a&gt; and &lt;a href="http://lepensemoi.free.fr/index.php/2010/04/28/technical-analysis-indicators-in-f-volatility"&gt;Volatility&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is part of a series on technical analysis indicators in F#, based on the multi-language TA-Lib.&amp;#160; Quick disclaimer: some of these indicators are not verified.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://v2matveev.blogspot.com/2010/04/nature-of-value-restriction.html"&gt;Vladimir Matveev’s Nature of value restriction&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;Value restriction is an error that firstly makes a direct hit in the brain of non-prepared developer. It has no straight analogues in the majority of mainstream languages and thus very confusing.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://v2matveev.blogspot.com/2010/04/mailboxprocessors-practical-application.html"&gt;Vladimir Matveev’s MailboxProcessors: Practical Application&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;&lt;em&gt;Last time we have examined the API of MailboxProcessors. Now it is time to see, how this concept can be applied to solve real-world problems.&lt;/em&gt;&lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://dougfinke.com/blog/index.php/2010/04/18/how-to-add-an-f-type-to-a-powershell-session/"&gt;Doug Finke’s How to add an F# type to a PowerShell session&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;The PowerShell Add-Type cmdlet lets you define a .NET Framework class in your Windows PowerShell session. It supports the following languages CSharp, CSharpVersion3, VisualBasic, JScript. It does not support FSharp directly.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Mark Pearl’s F# Objects &lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/04/29/f-objects-ndash-integrating-with-the-other-.net-languages-ndash.aspx"&gt;Part 1&lt;/a&gt;, &lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/04/29/f-objects-ndash-integration-with-the-other-.net-languages-ndash.aspx"&gt;Part 2&lt;/a&gt; and &lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/05/01/f-objects-ndash-part-3-ndash-itrsquos-time-to-overloadhellip.aspx"&gt;Part 3&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In the next few blog posts I am going to explore objects in F#. Up to now, my dabbling in F# has really been a few liners and while I haven’t reached the point where F# is my language of preference – I am already seeing the benefits of the language when solving certain types of programming problems. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Mark Pearl’s International Radio Operators Alphabet in F# and Silverlight &lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/04/22/international-radio-operators-alphabet-in-f-amp-silverlight-ndash-part.aspx"&gt;Part 1&lt;/a&gt; and &lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/04/22/international-radio-operators-alphabet-in-f-amp-silverlight-ndash-part-again.aspx"&gt;Part 2&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;My approach was really simple. I would need a function that would convert a single character to a string – i.e. ‘A’ –&amp;gt; “Alpha” and then I would need a function that would take a string of characters, convert them into a sequence of characters, and then apply my converter to return a sequence of words… make sense?&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://mikehadlow.blogspot.com/2010/04/currying-vs-partial-function.html"&gt;Mike Hadlow’s Currying vs Partial Function Application&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;There’s a lot of confusion over these two terms. By myself included. But I’m pretty happy now that I understand the difference and wanted to share my newfound knowledge with you, dear reader.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.bjoernrochel.de/2010/04/29/kata-fizzbuzz-in-f/"&gt;Bjorn Rochel’s Kata FizzBuzz in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Last F# book club meeting in Munich was awesome (as usual). 2 weeks ago we decided to do a Code Kata on each subsequent meeting. This week was our first, with Kata FizzBuzz.&amp;#160; This is what we came up with.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://ednortonengineeringsociety.blogspot.com/2010/04/your-language-aint-worth-pair-o-dimes.html"&gt;Jim Lehmer’s Your language ain’t worth a pair o’ dimes&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;That's not to say the Real World Functional Programming book is a bad book. It has been an interesting read so far, for sure. I am just going to stop reading the C# parts, thereby allowing the new concepts and new language I am learning to be &amp;quot;pure&amp;quot; in my mind, which should actually help speed up my learning process. And my suggestion to you is if you pick up the book, do the same thing, too. Dump your baggage, start fresh!&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://richardminerich.com/2010/04/the-ted-neward-f-folding-challenge/"&gt;Rick Minerich’s The Ted Neward F# Folding Challenge&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Take a list of numbers and compress it in a particular simple way but without any mutable state.&amp;#160; What makes this problem interesting is that a tech interviewer mentioned that that he hadn’t seen a functional solution to this problem.&amp;#160; I also wanted to share this because I think it’s a great example of how to convert an imperative loop into a functional fold.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+05%2f02%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f02%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+05%2f02%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f02%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f02%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/02/f-discoveries-this-week-05-02-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20609" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/functional/default.aspx">functional</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/allocation/default.aspx">allocation</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/roundup/default.aspx">roundup</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/recursion/default.aspx">recursion</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/silverlight/default.aspx">silverlight</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Fold/default.aspx">Fold</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/DHT/default.aspx">DHT</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/value+restriction/default.aspx">value restriction</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/uml/default.aspx">uml</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/physics/default.aspx">physics</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/mandelbrot/default.aspx">mandelbrot</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Symbiote/default.aspx">Symbiote</category></item><item><title>F# Discoveries This Week 02/08/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx</link><pubDate>Mon, 08 Feb 2010 19:28:41 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20161</guid><dc:creator>RickM</dc:creator><slash:comments>2</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20161.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20161</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20161</wfw:comment><description>&lt;p&gt;Back again with another F# community roundup.&amp;#160;&amp;#160; There’s been a ton of great content this week, almost too much.&amp;#160; To try to combat this I’ve attempted to sort posts roughly in terms of how interesting I found them.&amp;#160; All were worth the read though.&lt;/p&gt;  &lt;p&gt;Also, I’ll be speaking this Wednesday on F# at the &lt;a href="http://www.bostondotnet.org/"&gt;Boston .NET User Group&lt;/a&gt;.&amp;#160; If you find yourself there, be sure to say hello!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://channel9.msdn.com/shows/Going%20Deep/C9-Lectures-Dr-Don-Syme-Introduction-to-F-1-of-3/"&gt;Don Syme’s Introduction to F# (Video 1 of 3)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Dr. Don Syme is a principal researcher in MSR Cambridge. He has a rich history in programming language research, design, and implementation (C# generics being one of his most recognized implementations), and is the principle creator of F#.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/30/language-vs-library.aspx"&gt;Ashley Feniello’s FScheme Part 8: Language vs. Library&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Perhaps this post should have gone along with the one about macros and how Lisp is a “programmable programming language.” The common tension in any language or runtime design is how much to build in as primitives and how much to implement as libraries within the language or atop the runtime.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/lukeh/archive/2010/02/01/f-for-parallel-and-asynchronous-programming-pdc-2009.aspx"&gt;Luke Hoban’s F# for Parallel and Asynchronous Programming&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Last November at PDC 2009 in Los Angeles I gave a talk on F# for Parallel and Asynchronous Programming.&amp;#160; The talk begins by covering basic F# concepts, and then focuses on four challenging issues related to concurrency and the tools F# brings for addressing these - immutability, async workflows, and agents.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://brehaut.net/blog/2010/on_iteration"&gt;Andrew Brehaut’s On Iteration (Could just as well be entitled “Why Programmers Leave Python/C#/Java&amp;quot;)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;There is an observable trend in Python programmers that results in a reasonable section of them moving to functional programming languages. This trend is encouraged by the Python language, and has a couple of temporal considerations.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://weblogs.asp.net/podwysocki/archive/2010/02/05/using-and-abusing-the-f-dynamic-lookup-operator.aspx"&gt;Matthew Podwysocki’s Using and Abusing the F# Dynamic Lookup Operator&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Much like C# 4.0 has the ability to do dynamic lookup, F# also has the same capability, although in a different capacity.&amp;#160; The language has support for a dynamic lookup get operator ( ? ) and set operator ( ?&amp;lt;- ), but note that I said support and not actual implementation.&amp;#160; The actual implementation is up to you and how you want to use it.&lt;/em&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://weblogs.asp.net/podwysocki/archive/2010/02/01/a-kick-in-the-monads-writer-edition.aspx"&gt;Matthew Podwysocki’s A Kick in the Monads – Writer Edition&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In the past couple of Monads posts, we’ve talked briefly about the State and Reader Monads and their potential uses and misuses.&amp;#160; Before this series completes, I have a few more to cover including the Writer, Continuation and eventually Observable monad.&amp;#160; Today, we’ll get started looking at the Writer Monad and what it can do for us.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/02/06/recursion-is-the-new-iteration.aspx"&gt;Ashley Feniello’s Recursion Is the New Iteration&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Not all recursive expressions represent recursive behavior. In fact, iteration can be expressed recursively. One trick when considering the process that an expression represents is to think of functions as reducing to values rather than returning them. In a pure functional style (precisely because of referential transparency) you can do analysis by successive substitution.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Julien Ortin continues his series on Purely Functional Data Structures with a &lt;a href="http://lepensemoi.free.fr/index.php/2010/02/05/real-time-double-ended-queue"&gt;Real-time double-ended queue&lt;/a&gt;, a &lt;a href="http://lepensemoi.free.fr/index.php/2010/02/05/skew-binary-random-access-list"&gt;Skew binary random access list&lt;/a&gt; and a &lt;a href="http://lepensemoi.free.fr/index.php/2010/02/05/binary-random-access-list"&gt;Binary random access list&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This post describes the F# implementation of the &amp;lt;insert data structure here&amp;gt; from Chris Okasaki’s “Purely functional data structures”.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fsharpnews.blogspot.com/2010/02/john-conways-game-of-life-in-32-lines.html"&gt;Flying Frog Consultancy Presents - John Conway’s Game of Life in 32 lines of F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;John Conway's Game of Life is a famous example of a simple cellular automaton that produces remarkably diverse results. The game can be implemented in only 32 lines of F# including real-time visualization using Windows Presentation Foundation as follows:&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!1778.entry"&gt;Brian McNamara’s An RSS Dashboard in F# (Part 3)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Last time I covered IObservables and we created a useful ObservableSource class.&amp;#160; Today I’ll cover the next technology piece of the app: reading RSS feeds.&amp;#160; I’ll discuss the design considerations regarding how to poll feed for updates and publish feed items as IObservables, and walk through one implementation.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://nickgravelyn.com/2010/02/pong-in-fsharp-with-xna-game-studio/"&gt;Nick Gravelyn’s Pong in F# with XNA Game Studio&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;A few of my colleagues were discussing F# today and when/where/how it is/isn’t better than C#. I haven’t ever really used F# beyond a very, very brief look at the syntax, so tonight I decided to see what it was all about. As a little project, I decided to make Pong with XNA Game Studio using F# with Visual Studio 2010.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://cultivatingcode.com/2010/02/03/maybe-f-isnt-for-you/"&gt;Jim Burger’s Maybe F# isn’t for you…&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;If you aren’t excited about new ways to tackle the concurrency problem, or new approaches to handling generic and mathematical problems, and if the thought of breaking out the shiny new lexer and parser don’t give you a tingle, then maybe F# isn’t actually marketed at you at all.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.codeproject.com/KB/net-languages/COBOL-FSharp1.aspx"&gt;Alex Turner’s Calling F# from COBOL and Back Again (CodeProject)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Running languages on .NET is ultra-powerful. Using managed COBOL (from Micro Focus), it is possible to use F# code to work with COBOL code. Imagine a Cloud based F# map reduce system consuming legacy COBOL - yes, that really is on the horizon.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.navision-blog.de/2010/02/08/new-syntactic-sugar-for-fake-f-make-getting-rid-of-magic-strings/"&gt;Steffen Forkmann’s New syntactic sugar for “FAKE – F# Make”&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The new version 0.27 of “FAKE – F# Make” comes with new syntactic sugar for build targets and build dependencies. Don’t be afraid the old version is still supported – all scripts should still work with the new version.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/jaredpar/archive/2010/02/03/having-fun-with-events-in-f.aspx"&gt;Jared Parsons’s Having fun with events in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;h6&gt;&lt;/h6&gt;    &lt;p&gt;&lt;em&gt;Recently I ran into a situation where I needed to handle some events in F# in a special way.&amp;#160; In this particular case I wanted to be able to disable and re-enable my handler based on changes in the program.&amp;#160; Essentially the C# equivalent of continually adding and removing the handlers.&lt;/em&gt;&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stevegilham.blogspot.com/2010/01/glade-from-f.html"&gt;Steve Gilham’s “Hello Glade#” from F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Another bit of spiking, a rather tardy follow up from raw GTK#, starting from the C# example at the Mono Project site, but incorporating the earlier example, so as to build in a clean application exit, for one thing.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://langexplr.blogspot.com/2010/02/using-webcam-with-wia-and-f.html"&gt;Luis Diego Fallas’s Using a Webcam with WIA and F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this post I'm going to show a small example of taking a picture using a Webcam with Windows Image Adquisition 1.0 . This API seems to have changed in Vista and above, the following code only applies to XP.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fsharpnews.blogspot.com/2010/02/tic-tac-toe-demo.html"&gt;Flying Frog Consultancy’s WPF Tic-tac-toe demo&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The article walks through the design and implementation of a multithreaded program that uses logic programming to create an unbeatable computer opponent and Windows Presentation Foundation to provide a graphical user interface in only 115 lines of elegant F# code!&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://developers.slashdot.org/story/10/02/07/0059233/An-Interview-With-F-Creator-Don-Syme"&gt;A (Relatively Reasonable) Discussion of F# on Slashdot&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;OCatenac passes along an interview with Don Syme, chief designer of F#, which is Microsoft Research's offering for functional programming on the .Net platform. Like Scala, which we discussed last fall, F# aims at being an optimal blend of functional and object-oriented languages.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+02%2f08%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+02%2f08%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+02%2f08%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+02%2f08%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+02%2f08%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/02/08/f-discoveries-this-week-02-08-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20161" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/roundup/default.aspx">roundup</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/wpf/default.aspx">wpf</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/recursion/default.aspx">recursion</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/data+structures/default.aspx">data structures</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/events/default.aspx">events</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fake/default.aspx">fake</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/slashdot/default.aspx">slashdot</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/xna/default.aspx">xna</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/scheme/default.aspx">scheme</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/rss/default.aspx">rss</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/WIA/default.aspx">WIA</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/webcam/default.aspx">webcam</category></item><item><title>F# Discoveries This Week 11/09/2009</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx</link><pubDate>Mon, 09 Nov 2009 16:24:59 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:19686</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/19686.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=19686</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=19686</wfw:comment><description>&lt;p&gt;As momentum builds for the F# release with Visual Studio 2010, so too does the number of people blogging about the language.&amp;#160; This week we have a spec update, clarified comparisons, decision trees, porting gotchas and in depth explorations of the debug IL generated by F#.&amp;#160; Please do enjoy.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="https://www.clicktoattend.com/invitation.aspx?code=142886"&gt;Speaking on F# at the Connecticut .NET Developer’s Group&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Tomorrow (Tuesday November 10th, 2009) I’ll be speaking on F# at the &lt;/em&gt;&lt;a href="http://ctdotnet.org/default.aspx"&gt;&lt;em&gt;Connecticut .NET Developer’s group&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&amp;#160; For more information check out the &lt;/em&gt;&lt;a href="https://www.clicktoattend.com/invitation.aspx?code=142886"&gt;&lt;em&gt;ClickToAttend event&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/dsyme/archive/2009/11/04/f-1-9-7-language-specification-now-available.aspx"&gt;From Don Syme’s Blog - F# Spec Updated for the 1.9.7 Release&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Many thanks to all those who sent so much helpful feedback on the specification during Beta1. And for those using 1.9.7 already, thanks for your patience in the last couple of weeks - it took us a little longer to get this out the door than we had planned, since a development deadline for Visual Studio 2010 intervened.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/dsyme/archive/2009/11/08/equality-and-comparison-constraints-in-f-1-9-7.aspx"&gt;Don Syme’s Equality and Comparison Constraints in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;F# 1.9.7 introduces two new constraints to the F# language to help uncover issues in your code when using equality and comparison operators. In this blog entry we'll take a look at these constraints in a bit more detail. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The F# team has inherited quite a mess in terms of the lack of any kind of concrete definition of equality in the .NET framework.&amp;#160; It seems that they’ve been able to do much with it though.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Chris Smith’s Decision Trees &lt;a href="http://blogs.msdn.com/chrsmith/archive/2009/10/31/awesome-f-decision-trees-part-i.aspx"&gt;Part 1&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/chrsmith/archive/2009/11/02/awesome-f-decision-trees-part-ii.aspx"&gt;Part 2&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Now that we got all that painful math out of the way, let’s write some code! Here is an implementation of the algorithm in F#.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’m just dying to see this extended to Bayesian network.&amp;#160; Perhaps I’ll try and extend it myself.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/archive/2009/11/08/jumping-the-trampoline-in-c-stack-friendly-recursion.aspx"&gt;Bart De Smet’s Stack-Friendly Recursion&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Recursion is a widely known technique to decompose a problem in smaller “instances” of the same problem. For example, performing tree operations (e.g. in the context of data structures, user interfaces, hierarchical stores, XML, etc) can be expressed in terms of a navigation strategy over the tree where one performs the same operation to subtrees.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A detailed look at tail recursion optimization in F# and how to achieve something similar in C#.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stackoverflow.com/questions/142985/is-a-program-f-any-more-efficient-execution-wise-than-c"&gt;On StackOverflow, is a program F# any more efficient (execution-wise) than C#?&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I'm guessing that it is not because they both boil down to the same IL.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It turns out that F# is in fact much faster in some cases.&amp;#160; For more on F# performance see &lt;a href="http://stackoverflow.com/questions/144227/c-f-performance-comparison"&gt;this roundup post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Steve Gilham’s F# under the covers parts &lt;a href="http://stevegilham.blogspot.com/2009/09/f-algebraic-types-under-covers.html"&gt;1&lt;/a&gt;, &lt;a href="http://stevegilham.blogspot.com/2009/09/more-f-under-covers.html"&gt;2&lt;/a&gt;, &lt;a href="http://stevegilham.blogspot.com/2009/09/f-under-covers-iii.html"&gt;3&lt;/a&gt;, &lt;a href="http://stevegilham.blogspot.com/2009/09/f-under-covers-iv-fxcop-noise.html"&gt;4&lt;/a&gt;, &lt;a href="http://stevegilham.blogspot.com/2009/09/f-under-covers-v.html"&gt;5&lt;/a&gt;, &lt;a href="http://stevegilham.blogspot.com/2009/10/f-under-covers-vi.html"&gt;6&lt;/a&gt;, and &lt;a href="http://stevegilham.blogspot.com/2009/11/f-under-covers-viii.html"&gt;8&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;I'm in the tidying up stages for the little project I've been working on lately, a set of FxCop rules, mainly aimed at providing some complementary features for nCover-style code coverage, including static analysis for trivial methods -- or compiler generated ones.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In this series Steve takes a very careful approach to exploring the IL generated by the F# compiler in debug mode. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.mattssoftwareblog.com/?p=200"&gt;Matt Moloney’s Lessons Learned in Porting [from] C# to F# (WPF)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I encountered a ton of difficulties while porting code from C# to F#. Fortunately / unfortunately, so have many other people. Thankfully they took the time to write about these problems so my solutions were often only a quick search away. Here is a collection of some of the finds that were able to help me in my endeavors.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;An excellent post well worth reading for anyone getting ready to port to F#.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+11%2f09%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx&amp;amp;;title=F%23+Discoveries+This+Week+11%2f09%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx&amp;amp;title=F%23+Discoveries+This+Week+11%2f09%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx&amp;amp;;title=F%23+Discoveries+This+Week+11%2f09%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx&amp;amp;;title=F%23+Discoveries+This+Week+11%2f09%2f2009&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/11/09/f-discoveries-this-week-11-09-2009.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=19686" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IL/default.aspx">IL</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/talks/default.aspx">talks</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/roundup/default.aspx">roundup</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/recursion/default.aspx">recursion</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/efficiency/default.aspx">efficiency</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/decision+trees/default.aspx">decision trees</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/constraints/default.aspx">constraints</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/porting/default.aspx">porting</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/comparison/default.aspx">comparison</category></item><item><title>Discoveries This Week 08/02/2009</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx</link><pubDate>Mon, 03 Aug 2009 03:57:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:19031</guid><dc:creator>RickM</dc:creator><slash:comments>2</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/19031.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=19031</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=19031</wfw:comment><description>&lt;p&gt;Tomorrow Matthew Podwysocki will be speaking at the New England F# User Group.&amp;#160; I also have some great links today with Don Syme at QCon08, why we need the rec keyword, regular expression parsing and graphing with GLEE.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Tomorrow @ &lt;a href="http://fsug.org/"&gt;FSUG&lt;/a&gt;: &lt;a href="http://weblogs.asp.net/Podwysocki/"&gt;Matthew Podwysocki&lt;/a&gt; on Parallelism in F#&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;With the increasing amount of data available to us, we need new ways of thinking around how to create scalable solutions in order to best exploit it.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’m a long time fan of Matt’s blog and am looking forward to see him speak.&amp;#160; We’ve gotten most of the bugs out of our video workflow and so I hope to have his talk up on the &lt;a href="http://fsug.org/"&gt;New England F# User Group site&lt;/a&gt; early this week.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.bestechvideos.com/2009/07/17/f-succinct-expressive-efficient-functional-programming-for-net"&gt;Don Syme at QCon08, F# – Succinct, Expressive, Efficient Functional Programming for .NET&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Don Syme presents F# basics, a typed functional language for .NET that combines the succinctness, expressivity, and compositionality of functional programming with the runtime support, libraries, interoperability, tools, and object model of .NET.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’m always happy to find another instance of Don Syme speaking.&amp;#160; In this talk he focuses on why functional programming is worth Microsoft’s investment in time.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://codecrafter.blogspot.com/2009/07/f-why-rec.html"&gt;Code Crafter, F#: Why the rec?&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;One of the first things that I noticed is that in order to declare a recursive function you have to be explicit about it in the function definition. You have to declare it with the&lt;strong&gt; &lt;/strong&gt;rec keyword. […] But I don't know why they didn't do this by default.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Interestingly enough, &lt;a href="http://stackoverflow.com/questions/900585/why-are-functions-in-ocaml-f-not-recursive-by-default"&gt;it turns out&lt;/a&gt; that the reason for the rec keyword is required is due to the way Hindley-Milner type inference algorithm handles mutually recursive functions.&amp;#160; Without the keyword the algorithm would be unable to generalize types appropriately.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stevehorsfield.wordpress.com/2009/07/25/f-building-a-regular-expression-pattern-parser/"&gt;Steve Horsfield, F#: Building a Regular Expression Pattern Parser&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;One of the habits of a good functional programmer is to use tail-recursion.&amp;#160; This allows the compiler to convert recursion into iterative methods that can handle any length of input.&amp;#160; I have attempted to use this.&amp;#160; […] I have also structured the code into modules to demonstrate some of F#’s features in this regard.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Beautifully structured code for a first stab at F#.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stevehorsfield.wordpress.com/2009/07/27/f-a-data-structure-for-modelling-directional-graphs/"&gt;Steve Horsfield, F#: A Data Structure For Modelling Directional Graphs&lt;/a&gt; and &lt;a href="http://stevehorsfield.wordpress.com/2009/07/30/f-graphing-with-glee/"&gt;F#: Graphing with GLEE &lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In my previous post, I described how to parse a regular expression pattern into an abstract syntax representation.&amp;#160; The next phase is to transform the parsed syntax into a finite state machine.&amp;#160; I have chosen to model the FSM as a mathematical directional graph (digraph).&amp;#160; This post describes the implementation of this module in preparation for the actual compilation step.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Another excellent couple of samples from Steve.&amp;#160; I had not seen &lt;a href="http://research.microsoft.com/apps/pubs/default.aspx?id=64284"&gt;GLEE&lt;/a&gt; in the past and have had a number of projects in which it would have been quite useful. &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx&amp;amp;;subject=Discoveries+This+Week+08%2f02%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx&amp;amp;;title=Discoveries+This+Week+08%2f02%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx&amp;amp;title=Discoveries+This+Week+08%2f02%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx&amp;amp;;title=Discoveries+This+Week+08%2f02%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx&amp;amp;;title=Discoveries+This+Week+08%2f02%2f2009&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/02/discoveries-this-week-08-02-2009.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=19031" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/roundup/default.aspx">roundup</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/recursion/default.aspx">recursion</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/regular+expressions/default.aspx">regular expressions</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/graphs/default.aspx">graphs</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/parallelism/default.aspx">parallelism</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/GLEE/default.aspx">GLEE</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/data+structures/default.aspx">data structures</category></item></channel></rss>