<?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 : quotations</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/tags/quotations/default.aspx</link><description>Tags: quotations</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>F# Discoveries This Week 01/29/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/29/f-discoveries-this-week-01-29-2010.aspx</link><pubDate>Fri, 29 Jan 2010 19:15:34 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20100</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20100.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20100</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20100</wfw:comment><description>&lt;p&gt;Many apologies if I missed your post.&amp;#160; Having skipped last week due to some uncontrollable circumstances left me with quite a large number to sort through.&amp;#160; My personal favorite this week is Ashley Feniello’s series.&amp;#160; SICP eat your heart out.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.simple-talk.com/opinion/geek-of-the-week/don-syme-geek-of-the-week/"&gt;Richard Morris’s Geek of The Week is Don Syme&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“It came as a surprise to many of us when Microsoft pulled from it's hat a rabbit in the form of an exciting, radical, language that offers an effective alternative to the Object-oriented orthodoxy. The creative force behind this language, F#, turns out to be a brilliant Cambridge-based Australian called Don Syme, already well known for his work on generics in .NET.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Ashley Feniello’s extremely cool eight part (so far) series FScheme:&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“One of my New Year’s goals is to re-read Lisp in Small Pieces and implement all 11 interpreters and 2 compilers. As much as I like the &amp;quot;Lisp in Lisp&amp;quot; idea and enjoyed the eureka moment in SICP when Sussman writes the metacircular interpreter on the board to the music from Space Odyssey, I don't want to do Lisp in Lisp itself. Lisp in F# sounds like more fun.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Part 1: &lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/15/fscheme-0-0-0.aspx"&gt;FScheme - Scheme in F#&lt;/a&gt;    &lt;br /&gt;Part 2: &lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/15/fscheme-0-0-1.aspx"&gt;Just ‘let’ Me Be Already!&lt;/a&gt;    &lt;br /&gt;Part 3: &lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/15/fscheme-0-0-2-lambda.aspx"&gt;Lambda the Ultimate!&lt;/a&gt;    &lt;br /&gt;Part 4: &lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/16/fscheme-0-0-3-letrec.aspx"&gt;Rinse and Recurse&lt;/a&gt;    &lt;br /&gt;Part 5: &lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/18/fscheme-0-0-4-let.aspx"&gt;What ‘letrec’ Can’t Do&lt;/a&gt;    &lt;br /&gt;Part 6: &lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/18/fscheme-0-0-5-cons-car-cdr-list-quote.aspx"&gt;What's Lisp Without Lists?!&lt;/a&gt;    &lt;br /&gt;Part 7: &lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/21/fscheme-0-0-6-macro-quote-unquote-eval.aspx"&gt;No Wait, Macro the Ultimate!&lt;/a&gt;    &lt;br /&gt;Part 8: &lt;a href="http://blogs.msdn.com/ashleyf/archive/2010/01/22/fscheme-0-0-7-set-define-begin.aspx"&gt;Oh, The Humanity!&lt;/a&gt;&lt;/p&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Matthew Podwysocki’s Series - Creating Extended Builders &lt;a href="http://weblogs.asp.net/podwysocki/archive/2010/01/18/much-ado-about-monads-creating-extended-builders.aspx"&gt;Part 1&lt;/a&gt;, &lt;a href="http://weblogs.asp.net/podwysocki/archive/2010/01/21/much-ado-about-monads-creating-extended-builders-part-ii.aspx"&gt;Part 2&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/podwysocki/archive/2010/01/25/a-kick-in-the-monads-creating-extended-builders-part-iii.aspx"&gt;Part 3&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;“But, what we lack is an imperative programming model on top to allow for such things as if statements, for and while loops, and try/catch or try/finally blocks.&amp;#160; Luckily, there is a programmatic model to follow to make these things possible inside of our expressions.&amp;#160; Let’s cover each of these functions in turn and see what each one does and in the process implement them for the Reader Monad.”&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/chrsmith/archive/2010/01/24/being-an-evil-genius-with-f-and-net.aspx"&gt;Chris Smith’s Being an Evil Genius with F# and .NET&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;“Rather than doing the prototypical “Intro to F# Talk” I figured I go with something a bit more fun and relevant to the every day developer. Sure F# is neat and everything – but why bother to learn a new programming language unless you can use it to do something meaningful. Well, in addition excelling at both functional and object-oriented programming, F# is ideal for world domination.”&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://tomasp.net/blog/accelerator-quotations.aspx"&gt;Tomas Petricek’s Accelerator and F# (IV.): Composing computations with quotations&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“In this part of the series, we're going to look at working with quotations explicitly. We'll use meta-programming techniques to work with Accelerator. Meta-programming means writing programs that manipulate with other programs or pieces 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://blogs.msdn.com/visualizeparallel/archive/2010/01/19/tuning-a-parallel-ray-tracer-in-f.aspx"&gt;Luke Hoban’s Tuning a Parallel Ray Tracer in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;“One of the samples that is included with the Parallel Programming Samples for .NET 4 is a simple Ray Tracer.&amp;#160; This ray tracer provides a nice visual way of seeing the benefits of .NET 4 parallelism features, as well as giving insights into the way work stealing happens under the hood.” &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&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/01/21/scheduled-binomial-heap"&gt;Scheduled binomial heap&lt;/a&gt;, &lt;a href="http://lepensemoi.free.fr/index.php/2010/01/21/scheduled-bottom-up-merge-sort"&gt;Scheduled bottom-up merge sort&lt;/a&gt; and a &lt;a href="http://lepensemoi.free.fr/index.php/2010/01/21/hood-melville-queue"&gt;Hood-Melville queue&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 align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lepensemoi.free.fr/index.php/2010/01/27/rate-meter-in-f"&gt;Julien Ortin’s Rate meter in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The following code allows us to measure (and keep track of) the exchange rate (whether upload or download), and the time needed to exchange n additional bytes (assuming the rate is stable).”&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://lepensemoi.free.fr/index.php/2010/01/27/implementing-two-way-traffic-control-in-f-bucket-approach"&gt;Julien Ortin’s Two-way traffic control in F# – bucket approach&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The following approach is based on a per-request basis. That is, an actors asks for n tokens to read (or write), and the manager sends it an answer when the actor is allowed perform the action. In effect, if the actor asks for 100 bytes and only 50 bytes can be exchanged per second, it will get a green light only after two seconds have elapsed.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Stasyan continues his Red and Black tree Series with &lt;a href="http://stasyan.wordpress.com/2010/01/06/red-and-black-tree-in-f-insertion/"&gt;Insertion&lt;/a&gt;, &lt;a href="http://stasyan.wordpress.com/2010/01/20/red-and-black-tree-in-f-deletion/"&gt;Deletion&lt;/a&gt;, &lt;a href="http://stasyan.wordpress.com/2010/01/20/red-and-black-tree-in-f-extras/"&gt;Extras&lt;/a&gt; and a &lt;a href="http://stasyan.wordpress.com/2010/01/20/red-and-black-tree-in-f-post-mortem/"&gt;Post-Mortem&lt;/a&gt;. &lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“But it works nevertheless. I did some random testing of 10000 elements. Insertion and deletion worked. The cool thing is that the Black height of the tree with 10000 elements does not exceed 10.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://msmvps.com/blogs/gbarnett/archive/2010/01/17/book-review-f-for-technical-computing.aspx"&gt;Granville Barnett Review’s F# for Technical Computing&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“An F# book by Jon brings with it excitement and promise: his work is well known for being clear and concise, and the examples he uses to help the reader familiarise themselves with the application of F# are highly stimulating.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://sdtimes.com/link/34075"&gt;David Worthington’s WebSharper platform seeks to broaden F# use&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;“Microsoft's F# language is best suited for financial and scientific applications, but a startup wants to broaden its usage to building mainstream Web applications.”&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.ademiller.com/blogs/tech/2010/01/implementing-a-parallelized-octree-in-f"&gt;Ade Miller’s Implementing a Parallelized Octree in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“What’s an octree? An octree is a tree structure where each node has up to eight children, one for each of the octants. You can think of them as a three dimensional variation on a binary tree.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.intellifactory.com/blogs/diego.echeverri/2010/1/25/Data-Visualization-with-Websharper.article"&gt;Diego Echeverri’s Data Visualization with Websharper&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“In this post I'll show you how to make a nice visualization similar to the ones used by Hans Rosling. For this, we'll use the WebSharper Google Visualization bindings available as an extension package to the core platform.”&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/matt/archive/2010/01/19/regex-lexer-with-f.aspx"&gt;Matt Manela’s Regex based Lexer with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“This lexer allows you to define your regular expression based rules in a very declarative way using F# computation expressions.”&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.trelford.com/blog/post/Sorted-with-F-custom-operators.aspx"&gt;Phillip Trelford’s Sorted with F# custom operators&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“F# lets you define your own operators, and like a man with a new hammer hunting for nails :) I’ve found an application of F# custom operators for sorting multiple columns.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://chrisrizzuto.wordpress.com/2010/01/21/http-requests-in-f-using-a-tcpclient/"&gt;Chris Rizzuto’s Http Requests in F# using a TCPClient&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Obviously a few ways to do this using WebClient, HttpRequests, but in this case I decided to use a TcpClient object as I liked the control, and the ability to easily access the textual outputs.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://chrisrizzuto.wordpress.com/2010/01/22/f-wcf-service-to-calculate-stddev-and-keep-real-time-kpis/"&gt;Chris Rizzuto’s F# WCF Service to calculate StdDev and Keep Real-Time KPIs&lt;/a&gt;, &lt;a href="http://chrisrizzuto.wordpress.com/2010/01/25/f-wcf-kpis_concurrentdictionary-first-class-events/"&gt;F#, WCF, KPIs, ConcurrentDictionary, First Class Events&lt;/a&gt; and &lt;a href="http://chrisrizzuto.wordpress.com/2010/01/28/message-queues-in-f-building-into-the-kpi-service-past-3-posts/"&gt;Message Queues in F# / Building into the KPI Service&lt;/a&gt; &lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“First, below is the functions and events to calculate StdDev.&amp;#160; Thanks again LukeH for doing all the work for this part.&amp;#160; I only made a small change by adding a new method for handling the event when it is raised, and to make Mean and StdDev accessible from a WCF web service so that if polled for the current values, it is able to return them to the user.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blog.ctaggart.com/2010/01/list-transactional-wcf-bindings-in-f.html"&gt;Cameron Taggart’s List Transactional WCF Bindings in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The code uses LINQ to print a list of WCF binding that have a default constructor and support transactions.&amp;#160; I think it actually is a whole lot more readable in 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://blog.ctaggart.com/2009/12/hello-world-for-bing-maps-silverlight-f.html"&gt;Cameron Taggart’s Hello World for Bing Maps + Silverlight + F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The Bing Maps Silverlight Control was released in November.&amp;#160; […]&amp;#160; I’ve committed code for this blog that shows you how to get started with it using an F# Silverlight application.&amp;#160; I did not need to write any C# or XAML.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.scottseely.com/Blog/10-01-13/F_is_Changing_My_Style.aspx"&gt;Scott Seely’s F# is Changing My Style&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“A few years ago, I would have done a bunch of looping constructs to look at each element. However, I’ve been doing a lot more work with F#. While doing this experiment in C# for a project, I wound up writing the following instead:”&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/01/29/f-discoveries-this-week-01-29-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+01%2f29%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/29/f-discoveries-this-week-01-29-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/01/29/f-discoveries-this-week-01-29-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+01%2f29%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/29/f-discoveries-this-week-01-29-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/01/29/f-discoveries-this-week-01-29-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/29/f-discoveries-this-week-01-29-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/01/29/f-discoveries-this-week-01-29-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+01%2f29%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/29/f-discoveries-this-week-01-29-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/01/29/f-discoveries-this-week-01-29-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+01%2f29%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/29/f-discoveries-this-week-01-29-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/01/29/f-discoveries-this-week-01-29-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+01%2f29%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/29/f-discoveries-this-week-01-29-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20100" 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/quotations/default.aspx">quotations</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/lisp/default.aspx">lisp</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/data+structures/default.aspx">data structures</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Accelerator/default.aspx">Accelerator</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/FScheme/default.aspx">FScheme</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/reviews/default.aspx">reviews</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/GeekOfTheWeek/default.aspx">GeekOfTheWeek</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/tuning/default.aspx">tuning</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/trees/default.aspx">trees</category></item><item><title>F# Discoveries This Week 01/05/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/05/f-discoveries-this-week-1-05-2010.aspx</link><pubDate>Tue, 05 Jan 2010 21:10:05 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20002</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20002.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20002</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20002</wfw:comment><description>&lt;p&gt;It’s 2010, the year of F#, and the quantity of posts in this last week reflects it.&amp;#160; Not to pick favorites but the work Tomas Petricek has been doing with Accelerator is amazing, be sure to check it out.&lt;/p&gt;  &lt;p&gt;Also, I’d like to thank everyone who supported me on the road to becoming a Microsoft MVP.&amp;#160; I couldn’t have done it without you.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://tomasp.net/blog/accelerator-dataparallel.aspx"&gt;Tomas Petricek parallelizes Quotations with Accelerator&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this article, we'll look at more sophisticated way of using Accelerator from F#. We'll introduce F# quotations and look at translating 'normal' F# code to use Accelerator.&lt;/em&gt;&lt;em&gt;&lt;em&gt;&lt;/em&gt;&lt;/em&gt; &lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&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/2010/01/04/beta2-updates-to-the-f-jaoo-tutorial-code.aspx"&gt;Don Syme Posts updates his F# JAOO tutorial code&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I've now updated this tutorial code for the F# Visual Studio 2010 Beta2 release (with matching CTP release for Visual Studio 2008). We've also added some more content and explanatory comments.&lt;/em&gt;&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/2009/12/30/much-ado-about-monads-state-edition.aspx"&gt;Matthew Podwysocki investigates the State Monad&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In the past, I’ve had a series on Much Ado About Monads where I look at the basic Monads such as Maybe and List, but this time, let’s look at what we can do with the State Monad.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://web.conf.hu/sites/default/files/HWC-2009-ClientBasedWebApplicationDevelopmentInFSharp.pdf"&gt;Adam Granicz shows off WebSharper at the Hungarian Web Conference&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this talk, I will present our new web development platform, WebSharper(TM), that leverages the power and expressiveness of F# to allow .NET developers to write robust web applications in mere hours.&lt;/em&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://refcardz.dzone.com/refcardz/essential-f?oid=hom16267"&gt;Chance Coble and Ted Neward release DZone Refcardz for F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This DZone Refcard will lead you through the basic essentials so that you can quickly move on to using this Functional Programming Language for creating some mind-bending 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://talbottc.spaces.live.com/Blog/cns!A6E0DA836D488CA6!422.entry"&gt;Talbott Crowell posts his FSUG Parallel Programming Talk &lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this video, I discuss some of the advantages of .NET 4 and F# for asynchronous programming plus some of the new analysis tools built into Visual Studio 2010 for visualizing concurrency.&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/forki/fake/wiki/Home"&gt;Steffen Forkmann creates a ‘FAKE – F# Make’ group on BitBucket and releases version 0.17&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Due to its integration in F#, all benets of the .NET Framework and functional programming can be used, including the extensive class library, powerful debuggers and integrated development environments like Visual Studio 2008 or SharpDevelop, which provide syntax highlighting and code completion.&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/2009/12/31/physicist-queue"&gt;Physicist Queue&lt;/a&gt;, a &lt;a href="http://lepensemoi.free.fr/index.php/2009/12/31/lazy-binomial-heap"&gt;Lazy Binomal Heap&lt;/a&gt; and a &lt;a href="http://lepensemoi.free.fr/index.php/2009/12/31/bankers-queue"&gt;Bankers Queue&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://stackoverflow.com/questions/1989487/f-development-and-unit-testing"&gt;Mathias Brandewinder StackOverflows on Unit Testing with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;So far, my process with F# has been to write some functions, play with them with the interactive console until I am &amp;quot;reasonably&amp;quot; sure they work, and tweak &amp;amp; combine. This works well on small-scale problems like the Euler Project, but I can't imagine building something large that way.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://muckandbrass.com/web/display/~cemerick/2009/12/30/All+my+methods+take+316+arguments%2C+and+I+like+it+that+way"&gt;Chas Emerick demonstrates the problem with mutable objects&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;316 arguments to a method (which I don't think is actually possible in the jvm, but bear with me)? &amp;quot;That's absurd!&amp;quot;, you'd say. The problem, of course, is that the 3-arg doSomething actually has far more arguments than its signature implies:&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stasyan.wordpress.com/2009/12/31/red-and-black-tree-in-f/"&gt;A Mysterious Stranger implements a Red-Black Tree&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Both 2-4 and Red and Black tress are self balancing trees. They are kind of like cousins, since one could be converted into the other quite easily. Hence all performance analysis that apply to 2-4 trees applies to Red and Black trees.&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.markhneedham.com/blog/2010/01/04/f-expressing-intent-and-the-forwardapplication-operators/"&gt;Mark Needham discusses expressing intent with application operators&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;While trying out Roy Osherove's TDD Kata I realised that perhaps the choice of which of these to use or whether to use them at all depends on what intent we're expressing.&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/01/05/f-discoveries-this-week-1-05-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+01%2f05%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/05/f-discoveries-this-week-1-05-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/01/05/f-discoveries-this-week-1-05-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+01%2f05%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/05/f-discoveries-this-week-1-05-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/01/05/f-discoveries-this-week-1-05-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/05/f-discoveries-this-week-1-05-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/01/05/f-discoveries-this-week-1-05-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+01%2f05%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/05/f-discoveries-this-week-1-05-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/01/05/f-discoveries-this-week-1-05-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+01%2f05%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/05/f-discoveries-this-week-1-05-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/01/05/f-discoveries-this-week-1-05-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+01%2f05%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/01/05/f-discoveries-this-week-1-05-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20002" 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/fsug/default.aspx">fsug</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/quotations/default.aspx">quotations</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/WebSharper/default.aspx">WebSharper</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Accelerator/default.aspx">Accelerator</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/state/default.aspx">state</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/monad/default.aspx">monad</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Refcardz/default.aspx">Refcardz</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/JAOO/default.aspx">JAOO</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/tutorial/default.aspx">tutorial</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/opinion/default.aspx">opinion</category></item><item><title>Discoveries This Week 04/03/2009</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2009/04/04/discoveries-this-week-04-03-2009.aspx</link><pubDate>Sun, 05 Apr 2009 01:42:00 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:17932</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/17932.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=17932</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=17932</wfw:comment><description>&lt;p&gt;With the start of our F# User’s Group this next Monday and &lt;a href="http://blogs.msdn.com/cbowen/archive/2009/03/23/code-camp-11-the-schedule.aspx"&gt;New England Code Camp 11 last weekend&lt;/a&gt;, things have been extremely busy this past week.&amp;nbsp; Meanwhile, the F# sociocosm is growing at a rapid pace.&amp;nbsp; This week we have a talk by Don Syme, a look at F# quotations, and finally, some discussion on Seq.unfold.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Chris Bowen’s Post, &lt;a href="http://blogs.msdn.com/cbowen/archive/2009/04/01/announcing-the-f-user-group-in-cambridge-ma-april-6.aspx"&gt;Announcing F# User Group in Cambridge - April 6&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;A shameless plug here for &lt;a href="http://fsug.org/"&gt;our new user group&lt;/a&gt;.&amp;nbsp; A big thanks to Chris for helping us find the resources we needed to start out.&amp;nbsp; Without him this might never have come together. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Don Syme’s Talk, &lt;a href="http://channel9.msdn.com/posts/martinesmann/Don-Syme-FSharp-and-functional-programming-in-NET/"&gt;F# and functional programming in .NET&lt;/a&gt; &lt;/h3&gt; &lt;p&gt;As &lt;a href="http://blogs.msdn.com/dsyme/"&gt;Don Syme is the father of F#&lt;/a&gt;, when he speaks the community listens.&amp;nbsp; In this talk &lt;strong&gt;Don focuses on the pleasure and speed inherent in using FP and F#.&amp;nbsp; &lt;/strong&gt;He does this by describing the functional methodology and constructs which provide a simpler and more elegant model for building programs.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Alex P’s Post, &lt;a href="http://www.russiantequila.com/wordpress/?p=42"&gt;F# quotations at their simplest&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;A simple example on the surface for sure.&amp;nbsp; However, if you haven’t seen the power of F#’s language oriented programming features this is sure to be of interest.&lt;/p&gt; &lt;p&gt;For a deeper look at the power of quotations check out &lt;a href="http://tomasp.net/blog/quotvis.aspx"&gt;Tomáš Petříček’s F# quotations visualizer&lt;/a&gt;.&amp;nbsp; If his past projects are any indication &lt;a href="http://tomasp.net/blog/functional-2nd-review.aspx"&gt;Tom’s upcoming book&lt;/a&gt; is a must have for any F# enthusiast.&amp;nbsp; &lt;a href="http://www.amazon.com/dp/1933988924?tag=httptomasnet-20&amp;amp;camp=213381&amp;amp;creative=390973&amp;amp;linkCode=as4&amp;amp;creativeASIN=1933988924&amp;amp;adid=0GP01V4BXTYC4N0Q8X7N&amp;amp;"&gt;I preordered a copy just today&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Martin Peck’s Post, &lt;a href="http://blogs.msdn.com/mpeck/archive/2009/04/01/solving-problems-in-c-and-f-part-2.aspx"&gt;Solving Problems in C# and F# - Part 2&lt;/a&gt;&amp;nbsp;&lt;br&gt;(&lt;a href="http://blogs.msdn.com/mpeck/archive/2009/04/01/update-to-solving-problems-in-c-and-f-part-2.aspx"&gt;and update&lt;/a&gt;)&lt;/h3&gt; &lt;p&gt;One of the most fantastic things F# has to offer is the rich functional programming heritage of &lt;a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2008/06/16/functional-c-learn-from-f-and-linq.aspx"&gt;sequence operations&lt;/a&gt;.&amp;nbsp; To demonstrate how elegant they can make your code, &lt;a href="http://en.csharp-online.net/FSharp_Functional_Programming&amp;mdash;Lazy_Evaluation"&gt;I would like to offer the following alternative F# solution&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="code"&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;let &lt;/span&gt;fibs = 
  Seq.unfold (&lt;span style="color:blue;"&gt;fun &lt;/span&gt;(a, b) &lt;span style="color:blue;"&gt;-&amp;gt; &lt;/span&gt;Some( a, (b, a+b) )) (0I, 1I)&lt;/font&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;font size="2"&gt;Seq.find (&lt;span style="color:blue;"&gt;fun &lt;/span&gt;n &lt;span style="color:blue;"&gt;-&amp;gt; &lt;/span&gt;n &amp;gt;= 10I ** 999I ) fibs&lt;/font&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;I’m going to take this opportunity to point out the obvious: &lt;strong&gt;we have here two lines of F# which does almost exactly the same thing as thirty six of C#.&lt;/strong&gt;&amp;nbsp;&amp;nbsp; Now that’s what I call power and elegance.&amp;nbsp; The unfold function pretty much does exactly what yield was doing before, but implicitly in terms of the unfold function.&amp;nbsp; The idea of unfold can be confounding at first and so here is a breakdown of how it works:&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;let &lt;/span&gt;fibs =
  Seq.unfold 
    (&lt;span style="color:blue;"&gt;fun &lt;/span&gt;(a, b) &lt;span style="color:blue;"&gt;-&amp;gt; &lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:green;"&gt;//generator function, &lt;br&gt;                   //&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:green;"&gt;(a, b) is the previous state
      &lt;/span&gt;Some &lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:green;"&gt;//Option monad, needed for unfold
        &lt;/span&gt;(a, (b, a + b))) &lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:green;"&gt;//returned tuple: (value, state)&lt;br&gt;                         //or (&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:green;"&gt;first, (second, third))
      &lt;/span&gt;(0I, 1I) &lt;span style="color:green;"&gt;//Initial function state (first, second)&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;Note that in this version the state of the next two values in the sequence are always pre-calculated.&amp;nbsp; However, it is easy to avoid this if you instead consider the state in terms of the previous two values:&amp;nbsp; &lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;let &lt;/span&gt;fibs = 
  Seq.unfold (&lt;span style="color:blue;"&gt;fun &lt;/span&gt;(l, l2) &lt;/font&gt;&lt;font size="2"&gt;&lt;span style="color:blue;"&gt;-&amp;gt; 
    let &lt;/span&gt;n = l + l2 &lt;span style="color:blue;"&gt;in &lt;/span&gt;Some( n, ( n, l ) ))
    (0I, 1I) &lt;font size="2"&gt;&lt;span style="color:green;"&gt;//(previous, second previous)&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;
&lt;p&gt;If you want to learn more about unfold I recommend checking out:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Dustin Campell’s Post, &lt;a href="http://diditwith.net/2008/04/03/ApplesAndOranges.aspx"&gt;Apples and Oranges&lt;/a&gt;&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;This is the best description of how unfold works I’ve seen to date.&amp;nbsp; &lt;/p&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&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/04/04/discoveries-this-week-04-03-2009.aspx&amp;amp;;subject=Discoveries+This+Week+04%2f03%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/04/04/discoveries-this-week-04-03-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/04/04/discoveries-this-week-04-03-2009.aspx&amp;amp;;title=Discoveries+This+Week+04%2f03%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/04/04/discoveries-this-week-04-03-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/04/04/discoveries-this-week-04-03-2009.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/04/04/discoveries-this-week-04-03-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/04/04/discoveries-this-week-04-03-2009.aspx&amp;amp;title=Discoveries+This+Week+04%2f03%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/04/04/discoveries-this-week-04-03-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/04/04/discoveries-this-week-04-03-2009.aspx&amp;amp;;title=Discoveries+This+Week+04%2f03%2f2009" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/04/04/discoveries-this-week-04-03-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/04/04/discoveries-this-week-04-03-2009.aspx&amp;amp;;title=Discoveries+This+Week+04%2f03%2f2009&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2009/04/04/discoveries-this-week-04-03-2009.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=17932" 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/C_2300_/default.aspx">C#</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/.NET/default.aspx">.NET</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/don+syme/default.aspx">don syme</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsug/default.aspx">fsug</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/unfold/default.aspx">unfold</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/seq/default.aspx">seq</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/quotations/default.aspx">quotations</category></item></channel></rss>