<?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 : fsharp</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsharp/default.aspx</link><description>Tags: fsharp</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>F# Discoveries This Week 09/03/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/09/03/f-discoveries-this-week-09-03-2010.aspx</link><pubDate>Fri, 03 Sep 2010 22:12:19 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20991</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20991.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20991</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20991</wfw:comment><description>&lt;div align="left"&gt;   &lt;p&gt;One of the greatest things about running this blog, other than having a structured way to read all of the F# community content, is that I’ve been able to watch the community grow in a very concrete way.&amp;#160; &lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2009/08/31/f-discoveries-this-week-08-31-2009.aspx"&gt;Looking back to a year ago&lt;/a&gt; there was only six posts on F# over the course of a week, now we have well over twenty.&amp;#160; It’s truly amazing to see.&lt;/p&gt; &lt;/div&gt;  &lt;div align="left"&gt;Now, on to the links.&lt;/div&gt;  &lt;div align="left"&gt;&amp;#160;&lt;/div&gt;  &lt;h1 align="center"&gt;Audio and Video&lt;/h1&gt;  &lt;h3 align="left"&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Ralf-Lmmel-Advanced-Functional-Programming-Type-Classes/"&gt;Dr. Ralf Lämmel's C9 Lectures: Advanced Functional Programming - Type Classes&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;“In this second lecture in the series, Ralf digs into Type Classes, which are type system constructs that were originally introduced to provide a form of ad hoc polymorphism (i.e., an advanced form of overloading).”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3 align="left"&gt;&lt;a href="http://vimeo.com/14531763"&gt;Rick Minerich's Functional Language Paradigms with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;“I've got great news. F# is here and is poised to increase your productivity and reduce your suffering.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3 align="left"&gt;&lt;a href="http://channel9.msdn.com/posts/martinesmann/Teaching-programming-language-concepts-with-F-part-1/"&gt;Peter Sestoft's Teaching programming language concepts with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;“Peter introduces the curriculum, lecture plan and lecture notes for the course &amp;quot;Programs as data&amp;quot; that uses the functional programming concepts in F# to teach students language concepts and implementation details.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Tools&lt;/h1&gt;  &lt;h3 align="left"&gt;&lt;a href="http://refcardz.dzone.com/refcardz/essential-f?oid=hom27717"&gt;Essential F# | Refcardz&lt;/a&gt;&lt;/h3&gt;  &lt;div align="left"&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;h3&gt;&lt;a href="http://fsxplat.codeplex.com/releases/view/51797"&gt;fsxplat - Released: FSharp packages 1.2&lt;/a&gt;&lt;/h3&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;em&gt;“F# packages and samples for use across platforms”&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt;    &lt;h3&gt;&lt;a href="http://www.trelford.com/blog/post/TickSpec.aspx"&gt;Phillip Trelford's TickSpec: An F# BDD Framework&lt;/a&gt;&lt;/h3&gt;    &lt;blockquote&gt;     &lt;p&gt;&lt;em&gt;“Right now TickSpec is intended as a lightweight framework to get you started with BDD using F#. It is standards based, supporting a subset of the Gherkin language, so should be easy to change to another Gherkin based framework like Cucumber, SpecFlow or StorEvil.”&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/div&gt;  &lt;div align="left"&gt;&amp;#160;&lt;/div&gt;  &lt;div align="left"&gt;&amp;#160;&lt;/div&gt;  &lt;h1 align="center"&gt;General&lt;/h1&gt;  &lt;h3&gt;   &lt;blockquote&gt;     &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt; &lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://v2matveev.blogspot.com/2010/08/f-building-compiler-from-sources.html"&gt;Vladimir Matveev's F#: Building compiler from sources.&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Of course, compiling them sources and observing all internal compiler activities, so to say “in action’.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;   &lt;blockquote&gt;     &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt;   &lt;a href="http://blogs.msdn.com/b/ashleyf/archive/2010/09/01/fixing-decades-old-bugs-in-the-hp-35.aspx"&gt;Ashley Feniello's Fixing Decades-old Bugs in the HP-35&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“To make an assembler, I just parse with a series of regular expressions. F#’s active patterns came in super handy for this! In fact, the assembler turned out to be fewer lines of code than the disassembler.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/ashleyf/archive/2010/08/27/microcode-level-hp-35-emulator-in-javascript.aspx"&gt;Ashley Feniello's Microcode-level HP-35 Emulator (in JavaScript!)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“I had the (silly) idea of building a JavaScript-based emulator. Looking at Peter Monta’s Python-based disassembler and his object code listing, it looked simple enough to automatically generate script from David Cochran’s original bits. I wrote my own little straight forward 100-line disassembler in F#, producting an array of JavaScript functions”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!2144.entry"&gt;Brian McNamara's F# for puzzles (Morse code decoder)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The idea is simple; the computer works out all the possibilities for the next 3 letters, and then the human selects which prefixes “look promising” to investigate further.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/09/fuzzy-logic-f-reference-module-fuzzy0.html"&gt;Neil Carrier's TechNeilogy: Fuzzy Logic F# Reference Module: Fuzzy0&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Below is the fuzzy logic reference code for module Fuzzy0. Tomorrow I’ll post an example of its use that explores some extensions of earlier techniques.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://fdatamining.blogspot.com/2010/09/wekasharp-tutorial-for-running-weka-in.html"&gt;Yin Zhu's F# and Data Mining: WekaSharp: Tutorial for using Weka in F#/.Net&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“The minimal wrapper in F# for Weka.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://www.whattofix.com/blog/archives/2010/09/structuring-lar.php"&gt;Daniel Markham's Structuring Larger F# Functional Projects&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“So here's a suggested structure outline for those larger functional projects”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://www.ademiller.com/blogs/tech/2010/08/f-samples-for-parallel-programming-with-microsoft-net/"&gt;Ade Miller's F# Samples for Parallel Programming with Microsoft .NET&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“We’ve been working with the F# Team to get the samples for Parallel Programming with Microsoft .NET ported to F#.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/f-fuzzy-logic-wpf-and-tomatoes.html"&gt;Neil Carrier's TechNeilogy: F#, Fuzzy Logic, WPF, and Tomatoes!&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“This is my 100th blog post, and to celebrate, I’m pulling out all the stops. This example will combine F#, fuzzy logic, WPF, and tomatoes!”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/conjunctive-fuzzy-logic-rules-in-f.html"&gt;Neil Carrier's TechNeilogy: Conjunctive Fuzzy Logic Rules in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“It shows how to make multipart conjunctive rules by storing the input sets in a list and using the “min” operator to combine the results into a truncation height. To do this, it adds vector versions of the fire and fire all functions.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;   &lt;blockquote&gt;     &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;   &lt;/blockquote&gt;   &lt;a href="http://justinangel.net/WindowsPhone7VBnetAndFSharp#BlogPost=WindowsPhone7VBnetAndFSharp"&gt;Justin Angel's Windows Phone 7 supports VB.Net and F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“In this article we’ll review Windows Phone 7 support for the Visual Basic .Net and F# programming languages. Our goal is to demonstrate that Windows Phone 7 can indeed support F# and VisualBasic.Net code libraries and user controls.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://fsai.codeplex.com/documentation?version=11"&gt;F# Artificial Intelligence Library Tutorial&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“This step-by-step tutorial describes how to use the library in fsx script and C# project.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://chrismarinos.com/5-reasons-to-use-f-interactive-in-visual-studio-2010/"&gt;Chris Marinos's 5 Reasons to use F# Interactive in Visual Studio 2010&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“I find that I use F# Interactive more for performance analysis, learning F#, and verifying Base Class Library behavior than for spiking or scripting.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Community&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://stackoverflow.com/questions/3630349/calling-f-net-dll-code-from-php"&gt;Stack Overflow - Calling F# (.Net dll) code from php&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Yes you can, by using PHP COM class but it works only on Windows version of PHP5+ and needs no separate installation.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://stackoverflow.com/questions/3596718/scrap-your-boilerplate-in-f"&gt;Stack Overflow - Scrap Your Boilerplate in f#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“I've used the Scrap Your Boilerplate and Uniplate libraries in the Haskell programming language, and I would find that form of generic programming over discriminated unions to be really useful. Is there an equivalent library in the f# programming language?”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://stackoverflow.com/questions/3628031/path-to-become-a-better-f-programmer"&gt;Stack Overflow - Path to Become a Better F# Programmer&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“What should be my steps from now on to become a better/professional F# programmer?”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Teaching and Basics&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.dotnetconvo.com/post/view/2010/9/1/learning-f-for-c-developers-scope-workflow-and-lists"&gt;Bill Morrissey's Learning F# for C# developers: Scope, Workflow and Lists&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“This post is part two of a series of posts looking at syntactical examples of F# and C#. This post will supply you with easy to understand F# coding examples.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://www.winsoft.se/2010/08/type-inference-in-f/"&gt;Anders Hesselbom's Type inference in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“I have recently been to a short F# presentation at HiQ in Arboga. One of the things that got mentioned was type inference.”&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://www.reydacoco.blogspot.com/2010/09/webbrowser-controlvisual-f-windows.html"&gt;Rey Dacoco's WebBrowser control (Visual F# Windows Forms Application)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“WebBrowser control is a control used to display a web page or web document. To create a WebBrowser control in F#, use the following syntax:”&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/09/03/f-discoveries-this-week-09-03-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+09%2f03%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/09/03/f-discoveries-this-week-09-03-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/09/03/f-discoveries-this-week-09-03-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+09%2f03%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/09/03/f-discoveries-this-week-09-03-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/09/03/f-discoveries-this-week-09-03-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/09/03/f-discoveries-this-week-09-03-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/09/03/f-discoveries-this-week-09-03-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+09%2f03%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/09/03/f-discoveries-this-week-09-03-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/09/03/f-discoveries-this-week-09-03-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+09%2f03%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/09/03/f-discoveries-this-week-09-03-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/09/03/f-discoveries-this-week-09-03-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+09%2f03%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/09/03/f-discoveries-this-week-09-03-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20991" 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/type+inference/default.aspx">type inference</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/video/default.aspx">video</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/AI/default.aspx">AI</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/Weka/default.aspx">Weka</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Fuzzy+Logic/default.aspx">Fuzzy Logic</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/fsxplat/default.aspx">fsxplat</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/disassembler/default.aspx">disassembler</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/compiler/default.aspx">compiler</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/assembler/default.aspx">assembler</category></item><item><title>F# Discoveries This Week 08/27/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/27/f-discoveries-this-week-08-27-2010.aspx</link><pubDate>Sat, 28 Aug 2010 00:04:06 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20986</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20986.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20986</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20986</wfw:comment><description>&lt;p&gt;I’m back again with another edition of F# Discoveries this Week.&amp;#160; The most exciting announcement this week is the new F# August 2010 CTP which brings with it the ability to build your own VS2010 F# Express Edition with Visual Studio Shell and the prospect of building F# applications on Windows Phone 7.&amp;#160; Be sure to check out Daniel Mohl’s Windows Phone 7 template before getting started.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;News and Upcoming Talks&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!2135.entry"&gt;F# (August 2010 CTP)&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/08/17/announcing-the-f-2-0-free-tools-for-net-4-0.aspx"&gt;Announcing the F# 2.0 Standalone Tools Update&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/08/17/a-standing-invitation-to-f-users-to-quot-get-in-touch-quot.aspx"&gt;A standing invitation to F# users to &amp;quot;get in touch&amp;quot;&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://fsharpnews.blogspot.com/2010/08/don-syme-lecturing-at-functional.html"&gt;Don Syme lecturing at the F#unctional Londoners Meetup (9/9)&lt;/a&gt; &lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Tools and Libraries&lt;/h1&gt;  &lt;p&gt;&lt;a href="http://fdatamining.blogspot.com/2010/08/wekasharp-f-wrapper-for-weka.html"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fdatamining.blogspot.com/2010/08/wekasharp-f-wrapper-for-weka.html"&gt;WekaSharp: An F# wrapper for Weka&lt;/a&gt; (Yin Zhu)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/52928c6e-f77f-4ebd-a2f9-9815111bfa33"&gt;F# and C# Win Phone List Template (Silverlight)&lt;/a&gt; (Daniel Mohl)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://fsai.codeplex.com/releases/view/51337&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i1:lt:e0:p0:t1282930270:&amp;amp;cd=eti_CaoC4lg&amp;amp;usg=AFQjCNFE4CEYJxUJWQ3cDzIZJ6SMG8WhhQ"&gt;fsai Release &lt;b&gt;FSharp&lt;/b&gt; AI library 1.10.0&lt;/a&gt; (Lukáš Kouřil)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://feedproxy.google.com/~r/typepad/walmsleyk/through_the_interface/~3/UvCysIY6dYA/rockscroll-my-new-favourite-visual-studio-add-in.html"&gt;RockScroll: my new favourite Visual Studio Add-In&lt;/a&gt; (Kean Walmsley)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Video, Audio and Slides&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.sturmnet.org/blog/2010/08/24/slides-and-samples-from-f-talk-in-manche"&gt;Slides and samples from F# talk in Manchester&lt;/a&gt; (Oliver Sturm)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.trelford.com/blog/post.aspx?id=aead0ae1-9be2-4a67-9b8b-8516ace8bd2e"&gt;F# Intro Talk at NextGenUG in So’ton&lt;/a&gt; (Phillip Trelford)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://strangelights.com/blog/archive/2010/08/15/slides-from.aspx"&gt;Slides from Combinators, DSLs, HTML, and F#&lt;/a&gt; (Robert Pickering)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.inetachamps.com/Live/Presentation/ViewVideo/119"&gt;Busy .NET Developer’s Guide to F#: Basics&lt;/a&gt; (Ted Neward)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Technical Articles &lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://blog.ctaggart.com/2010/08/itunes-via-f-interactive.html"&gt;iTunes via F# Interactive&lt;/a&gt; (Cameron Taggart)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!2144.entry"&gt;F# for puzzles (Morse code decoder)&lt;/a&gt; (Brian McNamara)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://langexplr.blogspot.com/2010/08/extracting-elements-from-win32-resource.html"&gt;Extracting elements from Win32 resource files&lt;/a&gt; (Luis Diego Fallas)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://blogs.msdn.com/b/dsyme/archive/2010/08/16/a-variation-on-matt-moloney-s-undo-redo-quot-memento-quot-pattern.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1281985290:&amp;amp;cd=3GxHEKpf1t0&amp;amp;usg=AFQjCNEKd2idQhny1fNIgHlmfdPez_kHFA"&gt;A variation on Matt Moloney's &amp;quot;Memento&amp;quot; pattern&lt;/a&gt;&lt;b&gt;&lt;/b&gt; (Don Syme)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/bound-variables-in-f-what-reflection.html"&gt;Bound Variables in F#: What Reflection Reveals&lt;/a&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.ademiller.com/blogs/tech/2010/08/getting-f-running-on-a-continuous-integration-server/"&gt;Getting F# Running on a Continuous Integration Server&lt;/a&gt; (Ade Miller)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://softwareobjects.net/technology/other/how-fs-async-really-works/&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282477894:&amp;amp;cd=k9CaH95wgpM&amp;amp;usg=AFQjCNE5hHs-c_JhaGAhddvysqJEh-kjRA"&gt;How F#'s async really works?&lt;/a&gt;&lt;b&gt;&lt;/b&gt; (George Cullen)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/segment-tree-in-f.html"&gt;Segment Tree in F#&lt;/a&gt;&lt;b&gt;&lt;/b&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/bound-variables-in-f-what-reflection.html"&gt;Bound Variables in F#: What Reflection Reveals&lt;/a&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/fuzzy-logic-experiments-in-f.html"&gt;Fuzzy Logic Experiments in F#&lt;/a&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/fuzzy-logic-in-f-example-1.html"&gt;Fuzzy Logic in F#, Example 1&lt;/a&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/fuzzy-logic-in-f-now-more-functional.html"&gt;Fuzzy Logic in F#, Now More Functional!&lt;/a&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;b&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://fadsworld.wordpress.com/2010/08/25/f-fun-with-windows-phone-7/&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282782072:&amp;amp;cd=XJ2ShkoVq68&amp;amp;usg=AFQjCNEVAt95lQVSqeKm0dXE8akP53iHFA"&gt;F# “fun” with Windows Phone 7&lt;/a&gt;&lt;/b&gt; (Fahad)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://www.ginktage.com/2010/08/getting-started-with-windows-phone-development-in-f/&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282782072:&amp;amp;cd=XJ2ShkoVq68&amp;amp;usg=AFQjCNFkiiIJ8A2z_FqyO80eFhZDFH3t6Q"&gt;Getting started with Windows Phone in F#&lt;/a&gt;&lt;b&gt;&lt;/b&gt; (Senthil Kumar)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://geekswithblogs.net/MarkPearl/archive/2010/08/10/f-ndash-euler-problem-10.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1281458885:&amp;amp;cd=77K9bIUXzKc&amp;amp;usg=AFQjCNGYPsaDckXurAteHIDLK3HWbPTgsg"&gt;Euler Problem 10&lt;/a&gt; (Mark Pearl)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://geekswithblogs.net/MarkPearl/archive/2010/08/19/f-euler-problem-16.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282272232:&amp;amp;cd=iOkk_mPI5OU&amp;amp;usg=AFQjCNF2R_3U79eEDh20M9sCdzx8OTlFwQ"&gt;Euler Problem 16&lt;/a&gt; (Mark Pearl)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://stefanoricciardi.com/2010/08/25/project-euler-problem-9-in-f/&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282782072:&amp;amp;cd=XJ2ShkoVq68&amp;amp;usg=AFQjCNFTZJd0PBQ7zDbA5ChBQvwh4sHQaA"&gt;Project Euler Problem 9 in F#&lt;/a&gt; (Stefano Ricciardi)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://stefanoricciardi.com/2010/08/17/project-euler-problem-8-in-f/&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282093587:&amp;amp;cd=4z9k6saNi7w&amp;amp;usg=AFQjCNGx1unUptRzK4gbwfDu0QIHY2TlTQ"&gt;Project Euler Problem 8 in F#&lt;/a&gt; (Stefano Ricciardi)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://stefanoricciardi.com/2010/08/16/project-euler-problem-6-and-7-in-f/&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1281985290:&amp;amp;cd=3GxHEKpf1t0&amp;amp;usg=AFQjCNGChfVG9VJJM1rEr-nmTW3PPpivxA"&gt;Project Euler Problem 6 and 7 in F#&lt;/a&gt; (Stefano Ricciardi)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://bugsquash.blogspot.com/2010/08/enumerableskip-vs-seqskip.html"&gt;Enumerable.Skip vs Seq.skip&lt;/a&gt; (Mauricio Scheffer)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Getting Started and Evangelism Articles&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.whattofix.com/blog/archives/2010/08/putting-the-fun.php"&gt;Putting the fun in functional programming&lt;/a&gt; (Daniel Markham)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://weblogs.asp.net/mehfuzh/archive/2010/08/13/back-to-school-getting-to-know-f.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1281725004:&amp;amp;cd=nWaDOrnHOkg&amp;amp;usg=AFQjCNEt4SFUTNN2qHc898t8hQw9TMZaLg"&gt;Back to school : Getting to know F#&lt;/a&gt; (Mehfuz Hossain)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://blog.goblinfactory.co.uk/archive/2010/08/22/learning-f-by-writing-c.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282511650:&amp;amp;cd=rHNkQ7SbUSo&amp;amp;usg=AFQjCNF7jUd2cMmvStSryTOU7ARVIc_5dQ"&gt;Learning &lt;b&gt;F#&lt;/b&gt; by writing C#&lt;/a&gt; (Alan Hemmings)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://geekswithblogs.net/JoshReuben/archive/2010/08/25/f---sharper-than-c.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282782072:&amp;amp;cd=XJ2ShkoVq68&amp;amp;usg=AFQjCNFlk5Pxb8TN4YVtIJapTEywbtotBA"&gt;&lt;b&gt;F#&lt;/b&gt; - sharper than C#&lt;/a&gt; (Josh Reuben)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://www.dotnetconvo.com/post/view/2010/8/20/learning-f-for-c-developers&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i1:lt:e0:p0:t1282587993:&amp;amp;cd=iP9qcob4U6w&amp;amp;usg=AFQjCNFDcRBEP_8LeeTOVfwtLMl0apMk3Q"&gt;Learning F# for C# developers&lt;/a&gt; (Bill Morrissey)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;F# Community&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://arstechnica.com/civis/viewtopic.php%3Ff%3D20%26t%3D1120310&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i1:lt:e0:p0:t1282806817:&amp;amp;cd=_I4tOE61sI8&amp;amp;usg=AFQjCNHpTr1EpLmR4n30m6hOCqbkAdSVjw"&gt;Ars Technica - What do you think of F# ?&lt;/a&gt; &lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://stackoverflow.com/questions/3484315/how-to-merge-sorted-sequences-in-f&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i1:lt:e0:p0:t1281845656:&amp;amp;cd=flQlhVWmQLE&amp;amp;usg=AFQjCNEbMY53___uEv5A5iCUSMcI0TDRTA"&gt;SO - How to merge sorted sequences in F#.&lt;/a&gt; &lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://stackoverflow.com/questions/3544036/which-to-use-c-or-f-in-this-real-world-case&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1282544745:&amp;amp;cd=lj7VIHepRJM&amp;amp;usg=AFQjCNEdMuc-OKFR--h8n7QPnFZ8iQP5GA"&gt;SO - Which to use, C# or F#? In this &amp;quot;real world&amp;quot; case&lt;/a&gt; &lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://cs.hubfs.net/forums/thread/16387.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i1:lt:e0:p0:t1282400235:&amp;amp;cd=9vIGwKe_esA&amp;amp;usg=AFQjCNG_8qM4_ZdJz-obcLL0IyBncv2hZg"&gt;hubFS: F# Databse Application Samples &amp;amp; Articles&lt;/a&gt; &lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://cs.hubfs.net/forums/thread/16425.aspx"&gt;hubFS: MailboxProcessor.TryScan paradigm&lt;/a&gt;&lt;/h3&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/08/27/f-discoveries-this-week-08-27-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+08%2f27%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/27/f-discoveries-this-week-08-27-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/08/27/f-discoveries-this-week-08-27-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f27%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/27/f-discoveries-this-week-08-27-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/08/27/f-discoveries-this-week-08-27-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/27/f-discoveries-this-week-08-27-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/08/27/f-discoveries-this-week-08-27-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+08%2f27%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/27/f-discoveries-this-week-08-27-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/08/27/f-discoveries-this-week-08-27-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f27%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/27/f-discoveries-this-week-08-27-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/08/27/f-discoveries-this-week-08-27-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f27%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/27/f-discoveries-this-week-08-27-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20986" 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/reflection/default.aspx">reflection</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/async/default.aspx">async</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Euler/default.aspx">Euler</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/puzzles/default.aspx">puzzles</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Memento/default.aspx">Memento</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/FSAI/default.aspx">FSAI</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/iTunes/default.aspx">iTunes</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Win32+Resource/default.aspx">Win32 Resource</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Weka/default.aspx">Weka</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/CI/default.aspx">CI</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Fuzzy+Logic/default.aspx">Fuzzy Logic</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/August+2010+CTP/default.aspx">August 2010 CTP</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/WP7/default.aspx">WP7</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/RockScroll/default.aspx">RockScroll</category></item><item><title>F# Discoveries This Week 08/15/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/16/f-discoveries-this-week-08-15-2010.aspx</link><pubDate>Mon, 16 Aug 2010 18:38:05 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20975</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20975.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20975</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20975</wfw:comment><description>&lt;p&gt;&lt;/p&gt;  &lt;p align="left"&gt;Tons of great links along with a brand new less cluttered format today.&amp;#160; Let me know what you think &lt;a href="http://twitter.com/rickasaurus"&gt;on twitter&lt;/a&gt;.&lt;/p&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;News / Talks&lt;/h1&gt;  &lt;h3 align="left"&gt;&lt;a href="http://www.sfsharp.org/calendar/13860500/?from=list&amp;amp;eventId=13860500&amp;amp;action=detail&amp;amp;offset=0"&gt;Talbott Crowell at San Fancisco Bay Area F# Users Group (8/16)&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.communityforfsharp.net/august-2010-live-meeting"&gt;Don Syme at the Community for F# Online (8/17)&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://cufp.org/conference/sessions/2010/keynote-f-embracing-functional-programming-visual-"&gt;Luke Hoban will be giving a F# keynote at CUFP (10/2)&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://jaoo.dk/aarhus-2010/speaker/Joel+Pobar"&gt;Joel Pobar &amp;quot;Smart Software with F#&amp;quot; at JAOO (10/6)&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Podcasts / Screencasts / Videos&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://blogs.msdn.com/b/cdndevs/archive/2010/08/10/perspectives_2d00_on_2d00_clojure_2d00_and_2d00_f.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i1:lt:e0:p0:t1281678291:&amp;amp;cd=EpH0wo1Ao6I&amp;amp;usg=AFQjCNFpXxdv6qi5-yznVTQ2RT-l3hBCRQ"&gt;Perspectives on Clojure and F# (with Rich Hickey and Joe Pamer)&lt;/a&gt;&lt;b&gt;&lt;/b&gt; (Joey deVilla)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Ralf-Laemmel-Advanced-Functional-Programming-The-Expression-Problem/"&gt;Advanced Functional Programming - The Expression Problem&lt;/a&gt; (Dr. Ralf Lämmel)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://richardminerich.com/2010/08/the-language-matters-on-the-software-engineering-productivity-podcast/"&gt;The Language Matters on the Software Engineering Productivity Podcast&lt;/a&gt; (Rick Minerich)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Articles&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.mattssoftwareblog.com/?p=246"&gt;Undo / Redo using the Memento Pattern and Command Pattern in F#&lt;/a&gt; (Matt Moloney)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/08/16/a-variation-on-matt-moloney-s-undo-redo-quot-memento-quot-pattern.aspx"&gt;A variation on Matt Moloney's Undo/Redo &amp;quot;Memento&amp;quot; pattern&lt;/a&gt; (Don Syme)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://feedproxy.google.com/~r/FCode/~3/2Qjb2Xy4pQY/hindley-milner-type-inference-sample.html"&gt;Hindley Milner Type Inference Sample Implementation&lt;/a&gt; (Edmondo Pentangelo)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://feedproxy.google.com/~r/OccasionalNotes/~3/ykk3rXIf7nM/inotifypropertychanged-strikes-back.html"&gt;INotifyPropertyChanged strikes back&lt;/a&gt; (Vladimir Matveev)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://feedproxy.google.com/~r/OccasionalNotes/~3/-e9bUSYtS7A/websharper-part-2-webexcel.html"&gt;WebSharper, part 2: WebExcel&lt;/a&gt; (Vladimir Matveev)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/oop-virtualization-vs-f-discriminated.html"&gt;OOP Virtualization vs. F# Discriminated Unions&lt;/a&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/segment-tree-in-f.html"&gt;Segment Tree in &lt;b&gt;F#&lt;/b&gt;&lt;/a&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://feedproxy.google.com/~r/BloggemDano/~3/bGx2w8FgPwg/f-silverlight-template.html"&gt;A F# Silverlight Template&lt;/a&gt; (Daniel Mohl)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://fdatamining.blogspot.com/2010/08/reading-f-projects-part-i-common.html"&gt;Reading F# Projects, Part I: The Common Knowledge&lt;/a&gt; (Yin Zhu)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://fdatamining.blogspot.com/2010/08/reading-f-projects-part-ii-f-set.html"&gt;Reading F# Projects, Part II: F# Set&lt;/a&gt; (Yin Zhu)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://fdatamining.blogspot.com/2010/08/reading-f-projects-part-iii-f-math.html"&gt;Reading F# Projects, Part III: The F# math providers.&lt;/a&gt; (Yin Zhu)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blog.ctaggart.com/2010/08/query-zune-music-collection-with-f.html"&gt;Query Zune Music Collection with F#&lt;/a&gt; (Cameron Taggart)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://stackoverflow.com/questions/3484315/how-to-merge-sorted-sequences-in-f&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i1:lt:e0:p0:t1281845656:&amp;amp;cd=flQlhVWmQLE&amp;amp;usg=AFQjCNEbMY53___uEv5A5iCUSMcI0TDRTA"&gt;How to merge sorted sequences in F# - Stack Overflow&lt;/a&gt; (Neil Carrier)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://stackoverflow.com/questions/3459422/combine-memoization-and-tail-recursion"&gt;Combining memoization and tail-recursion – Stack Overflow&lt;/a&gt; (Ronald Wildenberg)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://flyingfrogblog.blogspot.com/2010/08/i-think-f-is-very-cool-rich-hickey.html"&gt;&amp;quot;I think F# is very cool&amp;quot; - Rich Hickey&lt;/a&gt; (Flying Frog Consultancy Ltd.)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://geekswithblogs.net/MarkPearl/archive/2010/08/10/f-ndash-euler-problem-10.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1281458885:&amp;amp;cd=77K9bIUXzKc&amp;amp;usg=AFQjCNGYPsaDckXurAteHIDLK3HWbPTgsg"&gt;&lt;b&gt;F#&lt;/b&gt; – Euler Problem 10&lt;/a&gt; (Mark Pearl)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://bohdanszymanik.blogspot.com/2010/08/sequnfold.html"&gt;Seq.unfold&lt;/a&gt; (Bohdan Szymanik)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://weblogs.asp.net/mehfuzh/archive/2010/08/13/back-to-school-getting-to-know-f.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1281725004:&amp;amp;cd=nWaDOrnHOkg&amp;amp;usg=AFQjCNEt4SFUTNN2qHc898t8hQw9TMZaLg"&gt;Back to school : Getting to know &lt;b&gt;F#&lt;/b&gt; - Mehfuz's WebLog&lt;/a&gt; (mehfuzh)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://strangelights.com/blog/archive/2010/08/15/slides-from.aspx"&gt;Slides from Combinators, DSLs, HTML, and F#&lt;/a&gt; (Robert Pickering)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.google.com/url?sa=X&amp;amp;q=http://www.atalasoft.com/cs/blogs/stevehawley/archive/2010/08/10/using-a-proxy-class-to-fix-f-protected-access-limitation.aspx&amp;amp;ct=ga&amp;amp;cad=:s7:f1:v0:d2:i2:lt:e0:p0:t1281518982:&amp;amp;cd=Bisi4NtW5kk&amp;amp;usg=AFQjCNGbbS1TPm8BFpFpFfkXpmGyFG4VVg"&gt;Steve's Tech Talk : Using a Proxy Class to Fix &lt;b&gt;F#&lt;/b&gt; Protected Access &lt;b&gt;...&lt;/b&gt;&lt;/a&gt; (Steve Hawley)&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Tools&lt;a name="misc"&gt;&lt;/a&gt;&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/matt/archive/2010/08/08/fastsharp-2-0.aspx"&gt;FastSharp 2.0&lt;/a&gt; (Matt Manela)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/e2ed87b6-c717-4738-8e2c-5ef8c7830ef1"&gt;NDjango 0.9.8&lt;/a&gt; (Michael Feingold)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/9147de02-e031-40f8-a370-f69e7e20c11c"&gt;F# Project Extender 0.9.3&lt;/a&gt; (Michael Feingold)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/07/09/quantifa-f-open-source-project-for-quantitative-finance-and-risk-management.aspx"&gt;Quantifa: F# open-source project for quantitative finance and risk management&lt;/a&gt; (Don Syme)&lt;/h3&gt;  &lt;h3&gt;&lt;strong&gt;&lt;a href="http://github.com/jaredpar/VsVim"&gt;VsVim&lt;/a&gt; (Jared Parsons)&lt;/strong&gt;&lt;/h3&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/08/16/f-discoveries-this-week-08-15-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+08%2f15%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/16/f-discoveries-this-week-08-15-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/08/16/f-discoveries-this-week-08-15-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f15%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/16/f-discoveries-this-week-08-15-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/08/16/f-discoveries-this-week-08-15-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/16/f-discoveries-this-week-08-15-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/08/16/f-discoveries-this-week-08-15-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+08%2f15%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/16/f-discoveries-this-week-08-15-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/08/16/f-discoveries-this-week-08-15-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f15%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/16/f-discoveries-this-week-08-15-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/08/16/f-discoveries-this-week-08-15-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f15%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/16/f-discoveries-this-week-08-15-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20975" width="1" height="1"&gt;</description><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/clojure/default.aspx">clojure</category><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/seq/default.aspx">seq</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/cufp/default.aspx">cufp</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/WebSharper/default.aspx">WebSharper</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Vim/default.aspx">Vim</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/rich+hickey/default.aspx">rich hickey</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/NDjango/default.aspx">NDjango</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/news/default.aspx">news</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Expression+Problem/default.aspx">Expression Problem</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Memento/default.aspx">Memento</category></item><item><title>F# Discoveries This Week 08/08/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/08/f-discoveries-this-week-08-08-2010.aspx</link><pubDate>Sun, 08 Aug 2010 18:57:45 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20961</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20961.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20961</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20961</wfw:comment><description>&lt;p&gt;So many links, all well worth your time.&amp;#160; I know one thing I won’t be missing is Don Syme’s online talk at C4FSharp on 8/17.&amp;#160; It’s great to be part of a language community in which the founder interacts in such a direct way.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;News&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/fsharp-component-design-guidelines.pdf"&gt;Draft F# Component Design Guidelines now Available (pdf)&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.communityforfsharp.net/august-2010-live-meeting"&gt;Don Syme will be speaking online for the Community for F# on 8/17&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.nyalt.net/calendar/14226459/?eventId=14226459"&gt;I’ll be speaking at the NYC ALT.NET User Group on 8/25&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.slideshare.net/wkhazzard/what-the-math-geeks-dont-want-you-to-know-about-fsharp-4917609"&gt;Kevin Hazzard’s Slides from DevConnections are up&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://cufp.org/conference/sessions/2010/eden-fwpf-framework-building-gui-tools"&gt;Howard Mansell will present Eden: (An F#/WPF framework for building GUI tools) at CUFP&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://langref.org/fsharp+clojure+scala+haskell"&gt;F# is now at 93% on langref, only 1% behind scala. (Great Going!)&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.pexforfun.com/"&gt;PexForFun.com now has puzzles for F#&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fsxplat.codeplex.com/releases/view/49967"&gt;FSharp Cross Platform Packages and Samples 1.1 Released&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Audio/Video&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://skillsmatter.com/podcast/agile-testing/jon-harrop-qr-decomposition"&gt;Jon Harrop at the London F-Sharp User Group: QR Decomposition&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This lecture takes the audience from a tiny numerically-robust implementation of a common linear algebra algorithm through several stages of optimization, culminating in a high-performance solution that easily outperforms Intel’s Math Kernel Library. The algorithm studied is QR decomposition, which is commonly used for linear least squares best fit.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;F# Articles&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.intellifactory.com/blogs/adam.granicz/2010/8/5/Expert-F!sharp!-2.0---what%27s-new"&gt;Adam Granicz’s Expert F# 2.0 – what’s new?&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;There comes a time when you just have to stop working for a minute and take a few moments to enjoy the fruits of your hard labor. For me, one of these moments lately came when I received the author copies of our book, Expert F# 2.0&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/08/f-templates-now-on-visual-studio.html"&gt;Daniel Mohl’s F# Templates Now On Visual Studio Gallery&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As Don Syme mentioned in a recent blog post, I've been working to get the five F# templates that have been announced on this blog up on Visual Studio Gallery.&amp;#160; I'm happy to say that all are now available.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggingabout.net/blogs/vagif/archive/2010/08/04/mock-framework-challenges-in-f.aspx"&gt;Vagif Abilov’s Mock framework challenges in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;So far I only tried very basic mocking described in the first post of Richard’s series: faking return value. As I expected, even such a simple operation became a challenge when executed from F# code. I managed to make tests work only for two and half frameworks.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bugsquash.blogspot.com/2010/08/figment-web-dsl-for-f.html"&gt;Mauricio Scheffer’s Figment: a web DSL for F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As I said, this is very much work in progress, and there's still a lot to do. I intend to make it fully open source when I finish writing my thesis.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/08/segment-tree-in-f.html"&gt;Neil Carrier’s Segment Tree in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Suffice to say that a segment tree stores a group of intervals on an ordered set, in such a way that all the intervals containing a given value can be efficiently located. Such a query is sometimes called a “stabbing query,” because it’s like sticking a spear through the data and seeing which entries get stabbed.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/07/lazy-f-sequence-evaluation-gotchas.html"&gt;Neil Carrier’s F# Sequence Lazy Evaluation Gotchas&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Today’s post will be old news to experienced F# programmers. Actually, it’s old news to me, relative newcomer that I am. However, it’s one of those things I tend to forget until it jumps up to bite me, as it did today.&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/esanchez/archive/2010/08/06/f-the-acm-and-the-sec.aspx"&gt;Edgar Sanchez’s F#, the ACM, and the SEC&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;And it is this last recommendation on DSLs that carries interesting news for F# because at the end of page 6 it states “Experience seems to show that higher-order programming languages such as F# provide a particularly good basis for domain-specific languages.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://flyingfrogblog.blogspot.com/2010/08/pure-f-now-only-2-slower-than-ocaml.html"&gt;Jon Harrop’s Pure F# now only 2× slower than OCaml&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is a surprising and encouraging result not only because it makes F# competitive for an even wider variety of tasks but because it also implies that Microsoft are taking F# so seriously that they are optimizing the .NET garbage collector for it!&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.atalasoft.com/cs/blogs/stevehawley/archive/2010/08/03/protect-yourself.aspx"&gt;Steve Hawley’s Protect Yourself&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;One solution is to label things that need to be protected, disassemble the output, run a regular expression to search/replace the accessibility and reassemble. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://cashforlifetv.com/blog/index.php/2010/08/03/f-and-net-needed-at-credit-suisse-is-there-a-future-for-this-and-microsoft-in-the-quant-world/"&gt;F# and .NET needed at Credit Suisse? Is there a future for this and Microsoft in the quant world?&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As I said, when you compare to these other languages in the world of quant, F# appears to be taking an early lead.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://stefanoricciardi.com/2010/08/05/project-euler-problem-4-in-f/"&gt;Stefano Ricciardi’s Project Euler Problem 4 in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The actual algorithm uses brute force to test for palindromicity (neologism?) all the numbers that can be composed multiplying together 3 digits numbers (those from 100 to 999), picking the highest one.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Miscellaneous&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://lambda-the-ultimate.org/node/4024"&gt;Lambda the Ultimate’s OSCON 2010 Emerging Languages Camp Roundup&lt;/a&gt;&lt;/h3&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/08/08/f-discoveries-this-week-08-08-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+08%2f08%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/08/f-discoveries-this-week-08-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/08/08/f-discoveries-this-week-08-08-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f08%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/08/f-discoveries-this-week-08-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/08/08/f-discoveries-this-week-08-08-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/08/f-discoveries-this-week-08-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/08/08/f-discoveries-this-week-08-08-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+08%2f08%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/08/f-discoveries-this-week-08-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/08/08/f-discoveries-this-week-08-08-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f08%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/08/f-discoveries-this-week-08-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/08/08/f-discoveries-this-week-08-08-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+08%2f08%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/08/08/f-discoveries-this-week-08-08-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20961" 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/ecm/default.aspx">ecm</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/lazy+evaluation/default.aspx">lazy evaluation</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/wpf/default.aspx">wpf</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/Mock/default.aspx">Mock</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/qr+decomposition/default.aspx">qr decomposition</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/pex/default.aspx">pex</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/puzzles/default.aspx">puzzles</category></item><item><title>F# Discoveries This Week 07/30/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/30/f-discoveries-this-week-07-30-2010.aspx</link><pubDate>Fri, 30 Jul 2010 19:03:57 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20927</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20927.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20927</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20927</wfw:comment><description>&lt;p&gt;It’s Friday and once again I’ve gathered up more F# content for your viewing pleasure.&amp;#160; If you happen find yourself in the Boston area this next Monday come meet me for our &lt;a href="http://www.fsug.org/"&gt;New England F# User Group meeting&lt;/a&gt;.&amp;#160; We are always happy to have new people interested in checking out functional programming.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;News&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/lisa/archive/2010/07/25/vs-2010-keyboard-shortcuts-for-c-vb-c-f-now-available-in-letter-8-5x11in-and-a4-210-215-297mm-print-ready-sizes.aspx"&gt;VS2010 Keyboard Shortcuts Now Available in Letter and A4 Size&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://langref.org/fsharp+clojure+scala+haskell"&gt;F# samples are 74% complete on langref.org&lt;/a&gt; (nudge nudge)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/07/24/contract-position-f-interactive-in-silverlight.aspx"&gt;Two Contract Positions: F# Interactive in Silverlight&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://fsug.org/"&gt;Scott Theleman will be speaking at New England FSUG on 8/2&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Audio / Video&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://tv.devexpress.com/#XPOFSharp.movie"&gt;eXpress Persistant Objects and the F# Language&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Articles&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/07/29/some-f-project-templates-available-online.aspx"&gt;Don Syme’s Some F# Project Templates Available Online&lt;/a&gt; and &lt;a href="http://bloggemdano.blogspot.com/2010/07/f-silverlight-mvvm-multi-project.html"&gt;Daniel Mohl’s An F# Silverlight MVVM Mutli-Project Template&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;If you have your own templates or projects-that-could-be-turned-into-templates, here are the steps to make and publish a template to the Visual Studio Gallery, making it really easy to access by the whole community.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://benhutchison.wordpress.com/2009/06/02/study-functional-programming-or-be-ignorant/"&gt;Ben Hutchison’s Study Functional Programming or Be Ignorant&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Right now, if you want to understand the state of the art in computer programming, those are your choices as I see them.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bohdanszymanik.blogspot.com/2010/07/heatimage-mapping-with-netf.html"&gt;Bohdan Szymanik’s Heat/Image Mapping with .NET/F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Most of the effort was spent aggregating and binning the data, the actual image prep was trivial. The following assumes you have an array of data to display.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/07/cartesian"&gt;Neil Carrier’s Cartesian Product of Lists in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;So without further ado (other than to note that all the code here is presented &amp;quot;as-is&amp;quot; and without warranty or implied fitness of any kind; use at your own risk) here is my Cartesian product of lists 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://blogs.msdn.com/b/jaredpar/archive/2010/07/27/converting-system-func-lt-t1-tn-gt-to-fsharpfunc-lt-t-"&gt;Jared Parsons’ Converting System.Func&amp;lt;T1..TN&amp;gt; to FSharpFunc&amp;lt;T,TResult&amp;gt;&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Interop of delegate style types between F# and other .Net languages is a pain point that results from a fundamental difference in how delegates are represented in the F# language. &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.atalasoft.com/cs/blogs/stevehawley/archive/2010/07/26/limit-your-memoization-please.aspx"&gt;Steve Hawley’s Limit Your Memoization, Please&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;So the lesson in this (and in many CS problems) is that you need to really understand the specific domain of your problem before applying a sweeping technique like memoization.&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/07/exploring-gac-with-f-and-monocecil.html"&gt;Cameron Taggart’s Exploring the GAC with F# and Mono.Cecil&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Mono.Cecil can be used to look inside assemblies. May be you want to search GAC to find types that implement a certain interface. In this post, I’ll show how to find all the types that implement IDisposable as an example.&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/07/find-authenticode-signed-assemblies.html"&gt;Cameron Taggart’s Find Authenticode Signed Assemblies&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Mono.Security can be used to check for the presence of an Authenticode signature on a assembly.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://community.devexpress.com/blogs/garyshort/archive/2010/07/26/xpo-f-lists-and-seqs-oh-my.aspx"&gt;Gary Short’s XPO – F# Lists and Seqs Oh My!&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Let’s assume we have a small database of people and we wish to calculate the combined age. The functional method of doing that would be to “fold” the elements of a collection of People over a function that accumulates the age of each person, in an accumulator value, which is threaded through the fold.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/07/27/f-euler-problem-9.aspx"&gt;Mark Pearl’s F# Euler Problem 9&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;After some more thinking, I decided to use tuples instead and generate the permutations using the Seq.unfold method.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://tabbles.net/blog/2010/07/29/fsharp-tutorial-how-fsharp-adapts-to-how-we-think-part1/"&gt;Maurizio Colucci’s How F# adapts to the way we think – part1&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is the first episode of a series meant to show how easily F# adapts to the way we think. I assume no knowledge of functional languages, but I do assume knowledge of an imperative language such as C#.&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/recipes/FSharpasyncronous.aspx"&gt;Wiston Gubantes’ F# Asynchronous Programming&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Async programming in functional languages such as F# is such a breeze.... &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Community&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://stackoverflow.com/questions/3233473/immutable-data-structures-performance"&gt;Stack Overflow: Immutable data structures performance&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://stackoverflow.com/questions/3350644/functional-reactive-f-storing-states-in-games"&gt;Stack Overflow: Functional Reactive F# - Storing States in Games&lt;/a&gt;&lt;/h3&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/07/30/f-discoveries-this-week-07-30-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+07%2f30%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/30/f-discoveries-this-week-07-30-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/07/30/f-discoveries-this-week-07-30-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f30%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/30/f-discoveries-this-week-07-30-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/07/30/f-discoveries-this-week-07-30-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/30/f-discoveries-this-week-07-30-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/07/30/f-discoveries-this-week-07-30-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+07%2f30%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/30/f-discoveries-this-week-07-30-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/07/30/f-discoveries-this-week-07-30-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f30%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/30/f-discoveries-this-week-07-30-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/07/30/f-discoveries-this-week-07-30-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f30%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/30/f-discoveries-this-week-07-30-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20927" 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/memoization/default.aspx">memoization</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/asynchronous/default.aspx">asynchronous</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Euler/default.aspx">Euler</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/modeling/default.aspx">modeling</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/templates/default.aspx">templates</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/mono/default.aspx">mono</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/authenticode/default.aspx">authenticode</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/internals/default.aspx">internals</category></item><item><title>F# Discoveries This Week 07/23/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx</link><pubDate>Fri, 23 Jul 2010 19:54:12 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20912</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20912.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20912</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20912</wfw:comment><description>&lt;p&gt;One of my favorite things about the F# community is that its members tend to build things that are a bit more interesting, and think about concepts that are a bit deeper.&amp;#160; This week is no exception.&amp;#160; Come on in and see what’s been happening in the F# world.&lt;/p&gt;  &lt;p&gt;A quick note to those giving F# talks or running events: If you would like listed here please don’t hesitate to contact me via the email link at the top of the page.&amp;#160; I’d love to help you help others to learn F#.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Events&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/07/nashville-geek-lunch-1130-am-next.html"&gt;Nashville Geek Lunch 11:30 AM Next Tuesday (7/27/2010)&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Articles&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://tomasp.net/blog/event-object-duality.aspx"&gt;Tomas Petricek’s The Duality of Object and Event references&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this article, I'll talk about an interesting example of duality that (to my best knowledge) wasn't described by anyone before. The two dual structures are references between objects in a normal program and references between events in a reactive application.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://mariusbancila.ro/blog/2010/07/18/resources-for-the-f-presentation-at-ronua-roadshow/"&gt;Marius Bancila’s Resources for the F# Presentation at Ronua Roadshow&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The program that I shown exhibits traits of both functional (for computing the fractal) and object oriented (for displaying the fractal) paradigms.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/07/two-instruction-virtual-computer.html"&gt;Neil Carrier’s A Two-Instruction Virtual RISC&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;One of my favorite hobbies is building really tiny virtual computers. The experience has even paid off a time or two when I needed to create a compact domain-specific language (DSL).&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/07/this-post-is-about-pair-of-f-operators.html"&gt;Neil Carrier’s F#'s Little-Known (?) and (?&amp;lt;-) Operators&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;These two operators work similar to the C/C++ “stringizing” pre-processor operator. That is, they convert non-string code (limited to simple identifiers in the case of F#) into strings according to the following translation patterns:&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lepensemoi.free.fr/index.php/2010/07/17/arbitraging-bookmakers-with-f"&gt;Julien Ortin’s Arbitraging bookmakers with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The principle is rather simple.&amp;#160; Take the best quotes for each outcome, and process.&amp;#160; If the sum of 1/quote_i is less than one, an arbitrage opportunity exists.&amp;#160; The amount to bet on each outcome is 100/quote. &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/07/tricky-late-binding-operators.html"&gt;Vladimir Matveev’s Tricky late binding operators&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;F# Dynamic and DynamicAssignment operators are not as simple as they appear ex facte. Most popular sample of their usage is something like this:&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/06/playing-with-websharper.html"&gt;Vladimir Matveev’s Playing with WebSharper&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As a sample we’ll make simple StickyNotes application. Web design is not my primary and favorite skill, so I'll omit cross-browser compatibility and bind all styles to Firefox.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://naveensrinivasan.com/2010/07/16/using-f-to-automate-reading%E2%80%93the-morning-brew/"&gt;Naveen Srinivasan’s Using F# to Automate Reading–The Morning Brew&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I like to try and automate most of the stuff . So I thought why not write a script that reads the Morning Brew feed, filter the excluded content that I am not interested in and open the urls before I come in.&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/07/building-partcover-4-on-vista.html"&gt;Steve Gilham’s Building PartCover 4 on Vista&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Following on from earlier in the week, I pulled the current trunk from SourceForge, and set about building it then putting it to work on some F# code which had caused&lt;/em&gt; an earlier version (the most recent available at the end of last year) to balk.&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/FS_Recursion_on_Reader.aspx"&gt;Gert-Jan van der Kamp’s Using a DataReader like a list in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This article demonstrates a technique how you can write recursive algorithms in F# using a Reader instead of a list, so you don't have to load all your data into memory first.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://saladwithsteve.com/2010/07/building-fsharp-on-the-mac.html"&gt;Steve Jenson’s Building F# on Mac OS X&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Joe says his team at Microsoft runs into these issues often with users and was kind enough to walk me through the steps to get F# running on the mac.&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/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+07%2f23%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-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/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f23%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-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/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-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/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+07%2f23%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-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/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f23%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-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/07/23/f-discoveries-this-week-07-23-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f23%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/23/f-discoveries-this-week-07-23-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20912" 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/WebSharper/default.aspx">WebSharper</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/automation/default.aspx">automation</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/late+binding/default.aspx">late binding</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/_3F003C00_-/default.aspx">?&lt;-</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Duality/default.aspx">Duality</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/RISC/default.aspx">RISC</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/_3F00_/default.aspx">?</category></item><item><title>F# Discoveries This Week 07/16/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/16/f-discoveries-this-week-07-16-2010.aspx</link><pubDate>Fri, 16 Jul 2010 15:49:19 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20903</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20903.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20903</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20903</wfw:comment><description>&lt;p&gt;As promised, a fresh batch of links to sooth your aching desire for more F#.&amp;#160; I’m particularly excited to announce I’ll give giving a F# tutorial this year at the &lt;a href="http://cufp.org/"&gt;Commercial Users of Functional Programming&lt;/a&gt; conference.&amp;#160; CUFP is going to have a lot of great content this year and will be well worth attending for anyone interested in functional programming. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;News &lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.navision-blog.de/2010/07/14/fake-f-make-1-40-5-0-released-bugfixes-for-cruisecontrol-net/"&gt;FAKE – F# Make 1.40.5.0 Released&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/07/15/f-jobs-at-credit-suisse-london.aspx"&gt;F# Jobs at Credit Suisse, London&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://cufp.org/f-20-day-beach-rick-minerich"&gt;I’ll be giving a F# tutorial at CUFP&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Video&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://vimeo.com/13215304"&gt;Steffen Forkmann speaks on F# Open Source Tools at the New England F# User Group&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Presented at the &lt;a href="http://fsug.org"&gt;New England F# User Group&lt;/a&gt; on June 7, 2010, Steffen discusses FAKE and NaturalSpec. Steffen is the author of the two open source F# projects &amp;quot;FAKE - F# Make&amp;quot; and &amp;quot;NaturalSpec&amp;quot;.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Articles&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.russiantequila.com/wordpress/?p=149"&gt;Alex Pedenko’s Introducing Furious – A proof-of-concept RRM for F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Meet furious. Furious is a RRM - a Record Relation Mapping system. It is a database-independent object query dsl for records, that currently has a (barebones) mysql implementation. Here's how it works. Suppose you have a record graph like so…&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/ExploringAmazonwithFsharp.aspx"&gt;Vagif Abilov’s Exploring Amazon S3 with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The purpose of this article is to show how fast you can dig into low level details of an unknown technology using F#, and how little code you need to write. Therefore I keep the text of the article short, focusing just on the required steps.&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://fdatamining.blogspot.com/2010/07/f-async-workflow-application-flickr.html"&gt;Yin Zhu’s F# Async workflow application: a Flickr crawler&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;My strategy is to use the search query to search images with some specific tags and from the result page(as shown below), the url of each image is extracted, from which the image and its tags are then crawled. &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://www.whattofix.com/blog/archives/2010/07/f-versus-micros.php"&gt;Daniel Markham’s F# Versus Microsoft's Regex. A Lesson in Types&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I was doing some text processing. As part of that, I set up a few RegExes. As I continued coding, I realized that I was following a pattern: apply the regex, check the match count, and if there were a bunch of matches, either get the first or last item.&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://fsharpnews.blogspot.com/2010/07/f-vs-mathematica-even-faster-pricer-for.html"&gt;Jon Harrop’s F# vs Mathematica: an even faster pricer for American options&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This new optimized and parallelized F# solution is now a whopping 960× faster than the original Mathematica code from Sal Mangano's Mathematica Cookbook.&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://techneilogy.blogspot.com/2010/07/pure-oop-personal-retrospective.html"&gt;Neil Carrier’s Pure OOP – A Personal Retrospective&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Almost instantly, my thoughts about the problem undergo a phase change, and I re-write my earlier code to be more succinct, maintainable, and composable, and usually more computationally efficient.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/07/integer-square-roots.html"&gt;Neil Carrier’s Integer Square Roots&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is an old algorithm, once popular in assembly language programs on small processors. The fact that it uses only integers, addition, subtraction, and less-than branching, mean that its hardware and software requirements are at rock bottom.&lt;/em&gt;&lt;/p&gt;   &lt;em&gt;&lt;/em&gt;    &lt;p&gt;&lt;/p&gt;   &lt;em&gt;&lt;/em&gt;&lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lepensemoi.free.fr/index.php/2010/07/13/f-event-module-extension"&gt;Julien Ortin’s F# Event module extension&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Functions to extend the F# Event module.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lepensemoi.free.fr/index.php/2010/07/09/socket-helpers-in-f"&gt;Julien Ortin’s Socket helpers in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This post describes a module to perform common socket operations using asynchronous operations and reactive programming.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lepensemoi.free.fr/index.php/2010/07/07/european-central-bank-extracting-reference-rates-with-f"&gt;Julien Ortin’s European Central Bank – extracting reference rates with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Every day, the European Central Bank publishes “official” reference FX (foreign exchange) rates where currencies are quoted against the Euro (expressed as EUR/XXX), or 1 EUR = xxx XXX.&amp;#160; The exchange rates of the last thirty sessions are available in xml format which we shall try to parse.&amp;#160; In order to do so, we use F# and active patterns, based on Don Syme’s draft paper.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Petr Lepilov’s F# interactive, AppFabric cache and PowerShell &lt;a href="http://sharpamqp.net/blog/post/F-interactive-AppFabric-cache-and-PowerShell-%28Part-1%29.aspx"&gt;Part 1&lt;/a&gt; and &lt;a href="http://sharpamqp.net/blog/post/F-interactive-AppFabric-cache-and-PowerShell-%28Part-2%29.aspx"&gt;Part 2&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Applications can store any serializable CLR object without worrying about where the object gets stored. Scalability can be achieved by simply adding more computers on demand. The cache also allows for copies of data to be stored across the cluster, thus protecting data against failures. It runs as a service accessed over the network.&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/07/dotcover-10-beta-first-impressions.html"&gt;Steve Gilham’s dotcover 1.0 beta – first impressions&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Not having R# at home -- because I rarely use C# even if I'm writing for .net -- it's this which interested me more. So, I gave it a try on my current F# project&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fortysix-and-two.blogspot.com/2010/07/f-and-code-contracts-not-quite-there.html"&gt;Kurt Schelfthout’s F# and Code Contracts: not quite there yet&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this post I’ll show how you can get Code Contracts sort of working for F#. From my very initial explorations, I would conclude that they seem basically usable for F# programming – but you’ll need some glue and tape, and not everything works as you’d expect.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Edmon Begoli’s Scala vs. F#, Application Programming Features &lt;a href="http://www.developer.com/lang/other/article.php/3883051/Scala-vs-F-Comparing-Functional-Programming-Features"&gt;Round 1&lt;/a&gt; and &lt;a href="http://www.developer.com/net/article.php/10916_3890906_1/Scala-vs-F-Round-2-Application-Programming-Features.htm"&gt;Round 2&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;F# and Scala, two relatively recent programming languages, provide most .NET and Java software developers with new functional programming features that are worth understanding and evaluating.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;Ivan Towlson’s F# pattern matching for beginners, &lt;a href="http://hestia.typepad.com/flatlander/2010/07/f-pattern-matching-for-beginners-part-1-getting-started.html"&gt;Part 1&lt;/a&gt;, &lt;a href="http://hestia.typepad.com/flatlander/2010/07/f-pattern-matching-for-beginners-part-2-decomposition.html"&gt;Part 2&lt;/a&gt; and &lt;a href="http://hestia.typepad.com/flatlander/2010/07/f-pattern-matching-for-beginners-part-3-guards.html"&gt;Part 3&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Pattern matching provides a concise but clear and highly expressive way of writing conditional logic, because it combines the conditional flow with the ability to extract values of interest&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&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/2010/07/16/f-discoveries-this-week-07-16-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+07%2f16%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/16/f-discoveries-this-week-07-16-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/07/16/f-discoveries-this-week-07-16-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f16%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/16/f-discoveries-this-week-07-16-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/07/16/f-discoveries-this-week-07-16-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/16/f-discoveries-this-week-07-16-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/07/16/f-discoveries-this-week-07-16-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+07%2f16%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/16/f-discoveries-this-week-07-16-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/07/16/f-discoveries-this-week-07-16-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f16%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/16/f-discoveries-this-week-07-16-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/07/16/f-discoveries-this-week-07-16-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+07%2f16%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/16/f-discoveries-this-week-07-16-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20903" 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/algorithms/default.aspx">algorithms</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/cufp/default.aspx">cufp</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/Mathematica/default.aspx">Mathematica</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/sockets/default.aspx">sockets</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/furious/default.aspx">furious</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Flickr/default.aspx">Flickr</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/contracts/default.aspx">contracts</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/S3/default.aspx">S3</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/options/default.aspx">options</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Regex/default.aspx">Regex</category></item><item><title>F# Discoveries this Week 07/09/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/09/f-discoveries-this-week-07-09-2010.aspx</link><pubDate>Fri, 09 Jul 2010 17:42:10 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20886</guid><dc:creator>RickM</dc:creator><slash:comments>2</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20886.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20886</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20886</wfw:comment><description>&lt;p&gt;This week we once again reap another huge crop of fantastic F# content.&amp;#160; In fact, it’s been getting so overwhelming that I’ll be moving to an every week format from here on out.&amp;#160; Please come in, read, and enjoy!&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;News&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000006794"&gt;A New F# Case Study on Microsoft.com&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;With its new tools, the bank can speed development by 50 percent or more, improve quality, and reduce costs.&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.meetup.com/FSharpLondon/"&gt;Next F# London Meetup Announced: July 28th&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The next meetup of the F#unctional London Meetup Group will be held on July 28, with Zach Bray talking on Agile Acceptance Testing with 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://www.itwriting.com/blog/articles/don-syme-on-f-microsofts-functional-programming-language-for-net"&gt;Tim Anderson (of The Register) Interviews Don Syme&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I met Syme at the QCon conference in London, in March 2010, and interviewed him shortly afterwards. Some quotes from that interviewed have already been published in an article for The Register, but I am now posting nearly all of it here.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://dotnetkicks.com/fsharp"&gt;DotNetKicks Now has a F# Section&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Thanks to everyone on twitter who voted!&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://sourceforge.net/projects/quantifa/"&gt;Quantifa 0.0.2 Released&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Quantifa is an F# open-source library for quantitative finance and risk management. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://laurent.le-brun.eu/site/index.php/2010/06/25/58-new-fsharp-mode-for-emacs"&gt;F#-mode for Emacs updated to 0.3&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The F# mode for Emacs is two years old, and has been downloaded more than 1,000 times.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="https://blogs.msdn.com/b/dsyme/archive/2010/07/08/tabbles-organize-your-files-written-in-f.aspx"&gt;Tables: Organize Your Files. Written in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Tabbles is a new way of organizing files: it combines virtual folders and tags, and auto-organizes and tags your files in very intelligent ways. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Audio / Video&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://channel9.msdn.com/posts/MSDNSweden/Svea-Ekonomi-uses-F-for-automated-billing-system-for-the-Telecom-industry/"&gt;Svea Ekonomi on F# for automated billing system for the Telecom industry&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In earlier versions of the billing system, much of the business logic resided in SQL Server and various Perl and Java programs. That made the solution hard to maintain and tailor to the needs of the customers. By using F# instead of an object oriented language the developers at Svea Ekonomi can be a lot more productive.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Articles&lt;/h1&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://www.voyce.com/index.php/2010/06/30/minilight-renderer-in-fsharp/"&gt;Ian Voyce’s Minilight renderer in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I’m a sucker for eye-candy, and the other day I came across the beautifully lit renders produced by &lt;/em&gt;&lt;em&gt;Minilight&lt;/em&gt;&lt;em&gt;. It’s a nice, minimal implementation of a global illumination renderer that’s been ported to a wide variety of different languages from C to ActionScript. So of course, I couldn’t resist trying to implement it 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://fsharpnews.blogspot.com/2010/07/f-vs-mathematica-fast-pricer-for.html"&gt;Jon Harrop’s F# vs Mathematica: fast pricer for American options&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;Another example from Sal Mangano's Mathematica Cookbook, this time taken from Andreas Lauschke's example, is a &amp;quot;fast&amp;quot; pricer for American options. The relevant section of the book stresses the importance of performance in this context and the Mathematica code presented was heavily optimized by experts.&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://fsharpnews.blogspot.com/2010/07/f-vs-mathematica-parametric-plots.html"&gt;Jon Harrop’s F# vs Mathematica: parametric plots&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Another example from Sal Mangano's Mathematica Cookbook (p.520) is an elegant little Mathematica program that uses a crude numerical integrator to plot the trajectory of a differential equation representing the populations of predators (foxes) and prey (rabbits):&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://fsharpnews.blogspot.com/2010/07/f-vs-mathematica-red-black-trees.html"&gt;Jon Harrop’s F# vs Mathematica: red-black trees&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The simpler F# solution is also 20× faster at inserting 100k elements and 100× faster at computing the range of depths in the resulting tree.&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://fsharpnews.blogspot.com/2010/07/lorenz-attractor.html"&gt;Jon Harrop’s Lorenz Attractor&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The Lorenz attractor is a fractal derived from the trajectory of a 3-dimensional dynamical system that exhibits chaotic flow. This blog post describes a 35-line program that computes trajectories of this attractor and visualizes them as a beautiful whisp using Windows Presentation Foundation.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/06/composable-order-relations.html"&gt;Neil Carrier’s Composable Order Relations&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Even before I started experimenting, I realized that checking a list for sorting was just a specific example of checking whether the pairs in a list satisfied a certain binary order relation. So I decided to work directly on a more general solution.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/07/continuation-passing-mnemonics.html"&gt;Neil Carrier’s Continuation-Passing Mnemonics&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Learning to construct continuations can be tough. It’s easy to state how they work: they facilitate tail recursion by recursively passing the remainder of a computation. But it can be a lot harder to actually get one working from scratch.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/07/dijkstras-shunting-yard-algorithm.html"&gt;Neil Carrier’s Dijkstra’s Shunting-Yard Algorithm&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Without further ado, here is my first F# implementation of Dijkstra’s shunting-yard algorithm, including a basic test (based on the example at Wikipedia). This is probably not a minimal or most-efficient implementation, but it is a starting place.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/07/arity-and-unit-arguments-in-f-20.html"&gt;Neil Carrier’s Arity and Unit Arguments in F# 2.0&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;While working on an internal domain-specific language, I encountered a case where passing a unit into a function made the syntax somewhat more readable. The completely artificial example below illustrates the concept as the function xfer1. I also tried a two-unit version, which is illustrated as xfer2.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/07/presentation-5-best-practices-for-f.html"&gt;Daniel Mohl’s Presentation: 5 Best Practices for F# Development slides and examples&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;Thanks to all who come out to the New England F# User Group meeting tonight!&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://tomasp.net/blog/dynamic-sql.aspx"&gt;Tomas Petricek’s Dynamic in F#: Reading data from SQL database&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;If you ever tried to call a SQL stored procedure directly using the SqlCommand, then you can surely appreciate the elegance of this code snippet. Let's now take a look at a larger example and some of the neat tricks that make this possible...&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Erik Schulz’s &lt;a href="http://gradbot.blogspot.com/2010/06/cartesian-tree-sort-revisited.html"&gt;Cartesian Tree Sort – Revisited&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/cartesian-tree-sort-skew-heap.html"&gt;Cartesian Tree Sort – Skew Heap&lt;/a&gt; and &lt;a href="http://gradbot.blogspot.com/2010/07/beating-quick-sort-cartesian-tree-merge.html"&gt;Beating Quick Sort - Cartesian Tree Merge&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;After looking at skew heap, merge sort and Cartesian tree, I figured there has to be a way to combine all three.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Julien Ortin’s &lt;a href="http://lepensemoi.free.fr/index.php/2010/06/25/seo-analysis-in-f"&gt;SEO Analysis in F#,&lt;/a&gt; and &lt;a href="http://lepensemoi.free.fr/index.php/2010/06/27/seo-analysis-in-f-a-friendly-application"&gt;SEO Analysis in F#, a friendly application&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Last time, we created a library of Search Engine Optimization (SEO) helpers. This time we’ll see how to use them to actually fetch information about your webiste rankings (and your competitors’).&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lepensemoi.free.fr/index.php/2010/07/07/european-central-bank-extracting-reference-rates-with-f"&gt;Julien Ortin’s European Central Bank – extracting reference rates with F#&lt;/a&gt; &lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Every day, the European Central Bank publishes “official” reference FX (foreign exchange) rates where currencies are quoted against the Euro (expressed as EUR/XXX), or 1 EUR = xxx XXX. The exchange rates of the last thirty sessions are available in xml format which we shall try to parse.&amp;#160; In order to do so, we use F# and active patterns, based on Don Syme’s draft paper.&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.intellifactory.com/blogs/anton.tayanovskyy/2010/6/29/Optimizing-JavaScript-with-F!sharp!.article"&gt;Anton Tayanovskyy’s Optimizing JavaScript with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The need for optimizing JavaScript is very peculiar. This is not about delivering top wall-clock performance, but rather delivering the most compact (in Release mode) and most readable (in Debug mode) source. In the case of WebSharper™, it is also about relieving the compiler and the macro writer from the burden of emitting optimal 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://blog.roundthecampfire.net/2010/06/my-first-f-post.html"&gt;Chris Ballard’s My First F# Post&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;That said, this post will take you through my solution for Euler 54, which (somewhat unusually) isn't a particularly mathematical problem, but turns out to be a great way to demonstrate some of the features of the F# language. The basic principle of this problem is to compare two hands of cards in the game of poker, and to determine which is the winning hand.&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.roundthecampfire.net/2010/06/prime-numbers-building-eulermaths.html"&gt;Chris Ballard’s Prime Numbers - Building the EulerMaths library in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Those of you who are doing Project Euler know what I am talking about by the EulerMaths library. There are certain fundamentals which crop up again and again in the questions and it is important to work these into a reusable and performant library.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/06/wpf-mvvm-multi-project-template.html"&gt;Daniel Mohl’s WPF MVVM Multi-Project Template: A Polyglot Approach&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As an advocate for using the right tool for the job, I have created a new WPF MVVM multi-project template composed of an C# View project, an F# ViewModel project, and an F# Model project.&amp;#160; &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/FSharp_Eliza_Bot.aspx"&gt;Rodolfo Ortega’s Eliza like chat bot in F# language for fun&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is a very simple Eliza like chat bot. I call it Meliza Sharp. I wrote it for having fun learning the F# language shipped 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://bugsquash.blogspot.com/2010/07/abusing-printfformat-in-f.html"&gt;Mauricio Scheffer’s Abusing PrintfFormat in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Pretty cool, huh? This trick can be used for other things, since PrintfFormatProc is fully reusable. For example, I'm currently using PrintfFormat manipulation to define type-safe routing in a web application&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/07/06/f-ndash-depressingly-simple-text-file-access.aspx"&gt;Mark Pearl’s Depressingly simple text file access&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Today I was doing some work work and kept having to parse a log file. After a few hours of doing the same routine stuff I thought I might try and automate it using F#.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Mathias’s &lt;a href="http://clear-lines.com/blog/post/On-the-road-from-C-to-F-reading-Stock-Quotes.aspx"&gt;On the road from C# to F#: reading stock quotes&lt;/a&gt; and &lt;a href="http://clear-lines.com/blog/post/From-C-Sharp-to-F-Sharp-reading-historical-stock-quotes.aspx"&gt;more stocks&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Mads Kristensen has a nice post where he shows how to read&amp;#160; stock quotes from Yahoo finance using C#, which was very helpful to get started. I figured it would be interesting to try out a conversion to F# and see what the result looked like.&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/07/09/f-discoveries-this-week-07-09-2010.aspx&amp;amp;;subject=F%23+Discoveries+this+Week+07%2f09%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/09/f-discoveries-this-week-07-09-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/07/09/f-discoveries-this-week-07-09-2010.aspx&amp;amp;;title=F%23+Discoveries+this+Week+07%2f09%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/09/f-discoveries-this-week-07-09-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/07/09/f-discoveries-this-week-07-09-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/09/f-discoveries-this-week-07-09-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/07/09/f-discoveries-this-week-07-09-2010.aspx&amp;amp;title=F%23+Discoveries+this+Week+07%2f09%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/09/f-discoveries-this-week-07-09-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/07/09/f-discoveries-this-week-07-09-2010.aspx&amp;amp;;title=F%23+Discoveries+this+Week+07%2f09%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/09/f-discoveries-this-week-07-09-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/07/09/f-discoveries-this-week-07-09-2010.aspx&amp;amp;;title=F%23+Discoveries+this+Week+07%2f09%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/07/09/f-discoveries-this-week-07-09-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20886" 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/don+syme/default.aspx">don syme</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/WebSharper/default.aspx">WebSharper</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Sorting/default.aspx">Sorting</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/sql/default.aspx">sql</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/dotnetkicks/default.aspx">dotnetkicks</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/case+study/default.aspx">case study</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/unit/default.aspx">unit</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/arity/default.aspx">arity</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/renderer/default.aspx">renderer</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/emacs/default.aspx">emacs</category></item><item><title>F# Discoveries This Week 06/25/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/25/f-discoveries-this-week-06-25-2010.aspx</link><pubDate>Fri, 25 Jun 2010 14:40:51 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20848</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20848.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20848</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20848</wfw:comment><description>&lt;p&gt;As always, a huge number of software releases and high quality articles this week.&amp;#160; My favorite thing about the F# community is that someone is always writing about something that tickles my brain.&amp;#160; While right out of a computer science textbook, I enjoyed Erik Schulz’s sorting animations quite a lot.&amp;#160; His animations are excellent.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;News&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!2120.entry"&gt;VS2010 Pro Power Tools Released&lt;/a&gt; (fixes scrolling reference dialog)&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;A set of extensions to Visual Studio Professional (and above) which improves developer productivity.&amp;#160; Includes a &lt;/em&gt;&lt;em&gt;New ‘Add Reference’ dialog: Pops up fast and is more pleasant (less frustrating) to use.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://huwmancode.codeplex.com/"&gt;HuwmanCode 0.1 Released – Simplified Windows Services in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;HuwmanCode is a collection of libraries intended to enhance the base class libraries for developers writing F#. Using HuwmanCode you can write a Windows Service in F# entirely.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fsprojectextender.codeplex.com/"&gt;F# Project Extender 0.9.3 Released&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Installing F# Project Extender provides tools to better organize files in F# projects by allowing project subdirectories and separating file management in Solution Explorer from controlling compilation order.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://vcc.codeplex.com/"&gt;VCC 2.1.30625 Released (Written in F#)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;VCC is a mechanical verifier for concurrent C programs. VCC takes a C program, annotated with function specifications, data invariants, loop invariants, and ghost code, and tries to prove these annotations correct. If it succeeds, VCC promises that your program actually meets its specifications.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://github.com/sandersn/fing"&gt;Fing 0.1 Released&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Fing is F# API Search. It's inspired by Hoogle, although it is not a port.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Audio/Video&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://skillsmatter.com/podcast/open-source-dot-net/tomas-petricek-reactive-programming-in-fsharp"&gt;Tomas Petricek at the London F# User Group – Reactive Programming in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;During this talk, Tomas will cover two techniques. We'll start by looking at F# events and declarative approach for specifying event processing. Next, we'll look at embedding F# event handling into asynchronous workflows and programming using &amp;quot;state machines&amp;quot;. We'll also briefly mention how this relates to more general functional programming &amp;quot;design patterns&amp;quot;.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;&lt;a href="http://www.fsug.org/OtherEvents/TechEdOnline/tabid/69/Default.aspx"&gt;A Listing of F# TechEd Talks, at the New England F# User Group&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;A complete listing of all TechEd talks pertaining to F#.&amp;#160; Thanks Talbott!&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1 align="center"&gt;Articles&lt;/h1&gt;  &lt;h3&gt;&lt;a href="http://programmingzen.com/2010/06/23/how-microsoft-is-changing-the-programming-world/"&gt;Antonio Cangiano’s How Microsoft is changing the programming world.&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The end result of Microsoft’s new approach is that now Joes everywhere are getting exposed to functional programming (masses of people who would otherwise be virtually shielded from the rest of the programming world).&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://gradbot.blogspot.com/2010/06/cartesian-tree-sort.html"&gt;Erik Schulz’s Cartesian Tree Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/insertion-sort.html"&gt;Insertion Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/priority-queue-heap-sort.html"&gt;Priority Queue &amp;amp; Heap Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/heap-sort.html"&gt;Heap Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/selection-sort.html"&gt;Selection Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/quick-sort.html"&gt;Quick Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/gnome-sort.html"&gt;Gnome Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/comb-sort.html"&gt;Comb Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/06/odd-even-sort.html"&gt;Odd-even Sort&lt;/a&gt;, &lt;a href="http://gradbot.blogspot.com/2010/05/cocktail-sort.html"&gt;Cocktail Sort&lt;/a&gt;, and &lt;a href="http://gradbot.blogspot.com/2010/05/bubble-sort.html"&gt;Bubble Sort&lt;/a&gt;.&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Inspired be Wikipedia's algorithm pages I decided to recreate their animations using JavaSrcipt and HTML5 canvas elements. IE 8 does not support canvas however new versions of all other modern browsers do. Mozilla Firefox, Google Chrome, Safari, and Opera.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://laurent.le-brun.eu/site/index.php/2010/06/23/57-fsharp-opengl-a-cross-platform-sample"&gt;Laurent Le Brun’s F# + OpenGL: a cross-platform sample&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The nice thing is that the application was cross-platform. I tried it on Windows, Linux and Mac, it worked everywhere, without changing a single line. It seems like F# is ready to make great cross-platform 3D 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://bloggemdano.blogspot.com/2010/06/f-wpf-mvvm-project-template.html"&gt;Daniel Mohl’s An F# WPF MVVM Project Template&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I've been planning for a while to create an F# WPF MVVM Template to add to the other templates that have been announced on this blog.&amp;#160; A resent post by Mark Pearl provided a great simple example which helped kick me into gear and bring this plan to fruition.&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/b/jomo_fisher/archive/2010/06/15/use-fslex-and-fsyacc-to-make-a-parser-in-f.aspx"&gt;Jomo Fisher’s Use FsLex and FsYacc to make a parser in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The starter project implements a simple calculator language that you can grow into a more sophisticated Domain Specific Language or text processing application.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lepensemoi.free.fr/index.php/2010/06/15/seo-helpers-in-f"&gt;Julien Ortin’s SEO helpers in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this post, we describe how to implement functions that help fetch information that can be used to study how well (or bad) the keywords are used on a given website in comparison with other (successful) competitors.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/06/flip-operator-for-f.html"&gt;Neil Carrier’s Flip Operator for F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I ask again: is there a good native way to do this in F#? If not, it might well worth standardizing this. (And potentially other FORTH-like operators like “over” and “rot,” perhaps with an extensible syntax.)&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.intellifactory.com/blogs/joel.bjornson/2010/6/18/Fun-with-dependent-formlets.article"&gt;Joel Björnson’s Fun with dependent formlets&lt;/a&gt; (in WebSharper)&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;To give some hints of what you can do with the WebSharper formlet library, the objective of the following exercise is to create a simple spread-sheet like widget based on formlets. &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.intellifactory.com/blogs/joel.bjornson/2010/6/17/More-of-Ext-JS-and-WebSharper.article"&gt;Joel Björnson’s More of Ext JS and WebSharper&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In general, seamlessly being able to create data abstractions and transfer data back and forth between the server and client is a very strong incentive for using the WebSharper extension.&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.intellifactory.com/blogs/joel.bjornson/2010/6/17/Reactive-programming-with-WebSharper.article"&gt;Joel Björnson’s Reactive programming with WebSharper&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In following post I'd like to highlight F# (and WebSharper) support for asynchronous and reactive programming.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/06/23/f-seq.unfold.aspx"&gt;Mark Pearl’s F# Seq.Unfold&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The more I play the more I am really loving F# and how succinct the language is.&amp;#160; Today I thought I would put up a brief post on the Seq.unfold function.&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.codingadventure.com/2010/06/21/testing-f/"&gt;Daniel Merino’s Testing F#&lt;/a&gt; (with Traveling Salesmen)&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The next example is a little snippet that returns a dictionary distances between cities for a small distributed traveling salesman problem I did last year to test F# on a software engineering class.&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/06/love-the-lambda/"&gt;Richard Minerich’s Love the Lambda&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;So the idea for Love the Lambda was born:&amp;#160; I would demonstrate both the usefulness and sheer novelty of first class functions and do so simultaneously in C# and F#.&amp;#160; More than that, I would use the opportunity as a kind of F# omnibus.&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.petehunt.net/blog/?p=15"&gt;Pete Hunt’s F# rocks (so far)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I have to say, I really like F# so far. For those of you not in the know, F# is Microsoft’s new first-class language that has been in development since 2002 but debuted in Visual Studio 2010. It is basically a dialect of O’Caml that runs on .NET and has full Visual Studio support.&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/06/25/f-discoveries-this-week-06-25-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+06%2f25%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/25/f-discoveries-this-week-06-25-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/06/25/f-discoveries-this-week-06-25-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+06%2f25%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/25/f-discoveries-this-week-06-25-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/06/25/f-discoveries-this-week-06-25-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/25/f-discoveries-this-week-06-25-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/06/25/f-discoveries-this-week-06-25-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+06%2f25%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/25/f-discoveries-this-week-06-25-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/06/25/f-discoveries-this-week-06-25-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+06%2f25%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/25/f-discoveries-this-week-06-25-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/06/25/f-discoveries-this-week-06-25-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+06%2f25%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/25/f-discoveries-this-week-06-25-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20848" 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/WebSharper/default.aspx">WebSharper</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Fing/default.aspx">Fing</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/FsYacc/default.aspx">FsYacc</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_+Project+Extender/default.aspx">F# Project Extender</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VC2010+Pro+Power+Tools/default.aspx">VC2010 Pro Power Tools</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Sorting/default.aspx">Sorting</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/OpenGL/default.aspx">OpenGL</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Reactive+Programming/default.aspx">Reactive Programming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/SEO/default.aspx">SEO</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Parsers/default.aspx">Parsers</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/FsLex/default.aspx">FsLex</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/VCC/default.aspx">VCC</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/HuwmanCode/default.aspx">HuwmanCode</category></item><item><title>F# Discoveries This Week 06/14/2010 - TechEd Edition</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx</link><pubDate>Mon, 14 Jun 2010 21:25:47 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20792</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20792.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20792</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20792</wfw:comment><description>&lt;p&gt;Despite the small number of talks on F#, it seemed the language was on everyone’s lips this TechEd.&amp;#160; Whether working at the Visual Studio Languages booth or hanging out at the parties afterward, almost everyone I talked to was actively investigating or making plans to explore the language.&amp;#160; &lt;/p&gt;  &lt;p&gt;Of course, this is great news.&amp;#160; A quiet tide of interest is quickly rising.&amp;#160; Now we just need to give those who are interested the resources they need to be successful and comfortable using F#.&amp;#160; &lt;/p&gt;  &lt;p&gt;For this reason, each and every F# speaker and blogger is critically important right now.&amp;#160; If you haven’t, don’t be afraid to give blogging a try.&amp;#160; The F# community is helpful and very forgiving of mistakes.&amp;#160; If you are already blogging, consider giving a talk at your local user group or code camp.&amp;#160; Now is the best time to help and educate.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;News&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/06/f-presentation-for-new-england-f-user.html"&gt;Daniel Mohl will be speaking at FSUG on 7/5&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.itu.dk/courses/BPRD/E2009/"&gt;IT University of Copenhagen uses F# as presentation language in a course: “Programming Language Concepts for Software Developers”&lt;/a&gt; (Thanks Pheophan)&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/dsyme/archive/2010/06/07/project-emporia-a-personal-view-on-twitter-implemented-in-f.aspx"&gt;Project Emporia Released, on Azure with a F# Core&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://fscheck.codeplex.com/"&gt;FsCheck 0.7 Released&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Video / Audio&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;Luke Hoban’s &lt;a href="http://www.msteched.com/2010/NorthAmerica/DEV307"&gt;F# in Microsoft Visual Studio 2010 (video)&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/b/lukeh/archive/2010/06/13/f-scaling-from-explorative-to-net-component-f-talk-teched-2010.aspx"&gt;F# Scaling from Explorative to .NET Component (blog)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The TechEd talk covered a number of interesting aspects of using F# in Visual Studio - tools, core syntax, some examples of current commercial users, and the physical structure of F# projects used in client applications.&amp;#160; But the theme of scaling from explorative programming to .NET component is one that I find particularly powerful, and which is a really unique strength of the F# language.&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.infoq.com/interviews/john-hughes-fp"&gt;John Hughes on Why Functional Programming Matters&lt;/a&gt; (video)&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;John Hughes is the author of “Why functional programming matters” paper and in this interview he outlines the merits of functional programming and the reason for his involvement with it. He also goes over several core principles of functional programming like monads, handling of side-effects, etc.&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.talkingshopdownunder.com/2010/06/episode-16-f-with-joel-pobar.html"&gt;Talking Shop Down Under with Joel Pobar&lt;/a&gt; (audio)&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This week see's Richard talking with Joel Pobar about F# and languages in general. Functional programming is coming more and more to the fore and this is a great episode to find out more about F#, try and get your head around monads and think more about the way you approach programming in general and wether the general purpose languages that you use currently are always the best choice for the job at hand.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Articles&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ff714588.aspx"&gt;Luke Hoban’s F# Fundamentals on MSDN Magazine&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This article takes a look at some of the core concepts of the F# language and its implementation on top of the CLR.&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/b/ashleyf/archive/2010/06/08/wolfram-a-new-kind-of-turing-machine.aspx"&gt;Ashley Feniello’s Wolfram – A New Kind of Turing Machine&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Stephen Wolfram’s book, “A New Kind of Science” is flippin’ brilliant! (or perhaps I'm just not brilliant enough to realize he's a mad man) 1,280 pages packed with beautiful insights and Tufte-worthy visualizations. I remember discovering it while randomly browsing the MS library one day. I became so enthralled, an hour passed just standing there reading it!&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.codeproject.com/KB/net-languages/SymbolicCalcInFS.aspx"&gt;Vagif Abilov’s Symbolic Calculation in F# on CodeProject&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;One of the best areas to use a functional language is to apply it to symbolic calculations. Like transforming algebraic expressions or evaluating function derivatives. I remember how I was impressed many years ago when I looked at a program in Prolog that occupied not more than one computer screen but could tell me that derivative of sin(x) was cos(x). So I wanted to do the same 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://blogs.msdn.com/b/dsyme/archive/2010/06/04/html5-programming-with-f.aspx"&gt;Don Syme’s HTML5 Programming with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Now that WebSharper has been released and matured, it will be great to see it used more widely by F# users.&amp;#160; Given the importance of both HTML5 and Silverlight, F# users interested in shipping visualization apps should really make sure they know how to use F# to program these, using the Silverlight SDK (for Silverlight) or tools such as WebSharper (for HTML5).&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://achrissmith.blogspot.com/2010/06/f-active-pattern-seven-tag-limit.html"&gt;Chris Smith’s F# active pattern seven-tag limit&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Once he went into the theory behind active patterns I agreed that the limit was reasonable and didn't push for us to change the design. This doesn't mean you can't use active patterns with greater than seven tags, it just means that you need to use a different language construct -- the partial active pattern -- instead.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Phillip Trelford’s &lt;a href="http://www.trelford.com/blog/post/Runtime-Units-of-Measure-for-F.aspx"&gt;Runtime Units of Measure for F#&lt;/a&gt; and &lt;a href="http://www.trelford.com/blog/post/Units-of-measure-auto-conversion.aspx"&gt;Units of measure auto-conversion&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;&lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The F# compiler includes a Units of Measure feature which infers a measure type at compile time, which means you get measure type safety with uncompromised runtime performance. […] Sometimes you might also want to actually infer units of measure at runtime, say to display the inferred unit type at the UI. The following F# code prototype provides such inference. &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/Silverlight-4-Calculator-Sample-in-F.aspx"&gt;Phillip Trelford’s Silverlight 4 Calculator Sample in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The sample demonstrates creating a View in WPF or Silverlight without XAML. The idea is to make things a little easier from F# by implementing a (+) operator overload to attach dependency properties.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Jomo Fisher’s &lt;a href="http://blogs.msdn.com/b/jomo_fisher/archive/2010/05/28/creating-an-odata-web-service-with-f.aspx"&gt;Creating an OData Web Service with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;If you’d like to take a look at the service I wrote, I published it on Visual Studio Gallery. You just need to go to File\New Project in 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://fsharpnews.blogspot.com/2010/06/dragon-curve-in-17-lines-of-f.html"&gt;Jon Harrop’s A dragon curve in 17 lines of F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Dragon curves are a family of self-similar fractal curves. The following 17-line F# program uses Windows Presentation Foundation to visualize the results of a simple recursively-constructed dragon curve.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Neil Carrier’s &lt;a href="http://techneilogy.blogspot.com/2010/05/list-collect-implementations-with.html"&gt;List&amp;lt;&amp;gt;.collect Implementations with Benchmarks&lt;/a&gt; and &lt;a href="http://techneilogy.blogspot.com/2010/06/one-more-list-collect-implementation.html"&gt;One more List&amp;lt;&amp;gt;.collect Implementation&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I had a situation come up in my proof-of-concept where I needed to do a collect on a .NET List&amp;lt;&amp;gt;. So I did some experiments with how it might best be accomplished. A key factor was that this is something that may be done literally millions of times a day if the application makes it to deployment; so I was concerned with performance.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/06/easy-no-compile-dfas.html"&gt;Neil Carrier’s Easy, No-Compile DFAs&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The methods for compiling a set of finite automata DFAs or NFAs into a composite DFA are found in most introductory compiler texts. But how easy is it to construct a simple engine in F# which recognizes a series of patterns? As it turns out, pretty simple.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/06/surfing-tuple-pipeline.html"&gt;Neil Carrier’s Surfing the Tuple Pipeline&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;It turns out that I like the RWFP approach better than mine, but the special tuple pipelines I came up with are not without interest, so I decided to post them here.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Neil Carrier’s This is why I love F# &lt;a href="http://techneilogy.blogspot.com/2010/06/this-is-why-i-love-f.html"&gt;Part One&lt;/a&gt; and &lt;a href="http://techneilogy.blogspot.com/2010/06/why-i-love-f-part-2.html"&gt;Part Two&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I can’t imagine having any trouble explaining the operation of this program to someone with a basic knowledge of statistics but no computer programming experience. It simply looks like what it does in a way that is succinct and comprehensible.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/06/standard-wcf-service-application.html"&gt;Daniel Mohl’s The Standard WCF Service Application Template for F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In the interest of building up a larger set of installed templates for F#, I've ported the standard C# WCF Service Application to F# and packaged it into a .vsi file.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a name="1997119761320975706"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/06/fsharpcouch-simple-couchdb-net-api-in-f.html"&gt;Daniel Mohl’s FSharpCouch: A Simple CouchDB .NET API in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;To interact with CouchDB, I primarily use Relax (a full featured &amp;quot;.NET API abstraction of CouchDB's (excellent) RESTful API&amp;quot;); however, I thought it might be fun and educational to create a simple CouchDB .NET API abstraction in F#.&amp;#160; Note: The code provided&amp;#160; here is loosely based on SharpCouch.&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/05/f-parsing-simple-language.html"&gt;Vladimir Matveev’s F# Parsing simple language&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;During my professional career I often met the task of code generation based on some source data. Last time it was analogue of BCL compiler for ExpressionTrees and then C# compiler have done mostly all the required job with parsing expressions.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Vladimir Matveev’s &lt;a href="http://v2matveev.blogspot.com/2010/06/f-performance-of-events.html"&gt;F# Performance of events&lt;/a&gt; and &lt;a href="http://v2matveev.blogspot.com/2010/06/f-performance-of-events-update.html"&gt;F# Performance of events (update)&lt;/a&gt; and &lt;a href="http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.aspx"&gt;Rick Minerich’s A Speedy Alternative to F# DelegateEvents&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As you see compiler have inlined code of Trigger method inside Run&amp;#160; and accessed field multicast directly. That’s why we replaced let binding with val.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://laurent.le-brun.eu/site/index.php/2010/06/07/54-fsharp-and-fparsec-a-glsl-parser-example"&gt;Laurent Le Brun’s F# and FParsec: a GLSL parser example&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;One of my side-projects is GLSL Minifier.&amp;#160; GLSL is the shading language of OpenGL, that is a language designed to run on the GPU, in order to control the graphics pipeline and create nice realtime graphical effects. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://laurent.le-brun.eu/site/index.php/2010/06/08/55-fsharp-getopt-to-parse-the-command-line"&gt;Laurent Le Brun’s F# getopt to parse the command line&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Many programs (especially console applications) need to parse the command line, and find which options the user want to set. As far as I know, .NET doesn't provide any function for this, but there several third-party libraries to do it.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fdatamining.blogspot.com/2010/06/note-on-efficiency-in-f-part-i-small.html"&gt;Yin Zhu’s A note on efficiency in F#, part I: small things first&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As a functional programming language, F# programs are kind of high-level, thus harder to reason its performance than imperative programs. Not the big-O thing, it is the constant. This series contains little tips about performance.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/06/10/f-wpf-form-ndash-the-basics.aspx"&gt;Mark Pearl’s F# WPF Form – the basics&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I have been keeping my eye out for some examples of creating a WPF form in a F# project and came across &lt;/em&gt;&lt;em&gt;Tim’s F# Twitter Stream Sample [..]&lt;/em&gt;&lt;em&gt; So today I am going to make just the very basic WPF form with all the goodness of a XAML window.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/06/09/simple-mouse-move-event-in-f-with-winforms.aspx"&gt;Mark Pearl’s Simple Mouse Move Event in F# with WinForms&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In Thomas’s post he has a form with an ellipse on it that when he clicks on the ellipse it pops up a message box with the button clicked… awesome. Something that got me on the post though was the code similar to the one below…&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://shinkirou.org/blog/2010/06/f-multidimensional-arrays-and-jagged-arrays/"&gt;Ming Tang’s F# Multidimensional Arrays and Jagged Arrays&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The problem is that, an array is initialized per every rows, which wastes computational resource. Because the widths of each row are constant, why not make a 1d array and access pixels like y * width + x.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://community.livejournal.com/visual_fsharp/3090.html"&gt;Pheophan’s Fun with Fibonacci&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;“Horrible performance. fibnaive 40 took 16.6 sec on my laptop&amp;quot; […] “It’s also pretty fast. Here are results of calculating 1000 Fibonacci numbers: Real: 00:00:00.001, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0”&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/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+06%2f14%2f2010+-+TechEd+Edition" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.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/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx&amp;amp;;title=F%23+Discoveries+This+Week+06%2f14%2f2010+-+TechEd+Edition" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.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/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx&amp;amp;title=F%23+Discoveries+This+Week+06%2f14%2f2010+-+TechEd+Edition" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx&amp;amp;;title=F%23+Discoveries+This+Week+06%2f14%2f2010+-+TechEd+Edition" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.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/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx&amp;amp;;title=F%23+Discoveries+This+Week+06%2f14%2f2010+-+TechEd+Edition&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/14/f-discoveries-this-week-06-14-2010-teched-edition.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20792" 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/algorithms/default.aspx">algorithms</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/parser/default.aspx">parser</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/units+of+measure/default.aspx">units of measure</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/FsCheck/default.aspx">FsCheck</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/silverlight/default.aspx">silverlight</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/Active+Patterns/default.aspx">Active Patterns</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/HTML5/default.aspx">HTML5</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/symbolic+calculation/default.aspx">symbolic calculation</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/DFA/default.aspx">DFA</category></item><item><title>A Speedy Alternative to F# DelegateEvents</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.aspx</link><pubDate>Fri, 04 Jun 2010 16:19:58 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20757</guid><dc:creator>RickM</dc:creator><slash:comments>4</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20757.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20757</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20757</wfw:comment><description>&lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;DelegateEvents use DynamicInvoke under the hood and so can be slow when trigged frequently.&amp;#160; As we have an existing model which requires an event interface, this was was causing our F# implementation to be a bit slower than the C# we were comparing it to.&amp;#160; Thankfully, F# allows you to implement your own eventing via IDelegateEvent.&amp;#160; With a standard Invoke version of DelegateEvent provided by James Margetson, our implementation in F# is running at equivalent speed to C#.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The other day I was working with &lt;a href="http://www.atalasoft.com/cs/blogs/stevehawley/"&gt;Steve&lt;/a&gt; on trying to discover why a particular segment of apparently equivalent code was running ~25% slower in F# when compared to C#.&amp;#160; We broke out &lt;a href="http://www.automatedqa.com/products/aqtime/"&gt;AQTime&lt;/a&gt; and did a line by line release-mode profile.&amp;#160; The frequent triggering of a &lt;a href="http://msdn.microsoft.com/en-us/library/ee370450.aspx"&gt;DelegateEvent&lt;/a&gt; immediately jumped out as the cause.&amp;#160; &lt;/p&gt;  &lt;p&gt;Needless to say, I was a bit concerned.&amp;#160; What could be causing this slow eventing in my favorite language?&amp;#160; After a brief review of the generated IL, nothing in particular seemed fishy.&amp;#160; So, I quickly built a sample and sent it off to my favorite language team.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The contents of the F# library assembly:&lt;/strong&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:dc45fc3f-9c89-49d1-bef1-39b6ee119d05" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"&gt;&lt;span style="color:#0000ff;"&gt;type&lt;/span&gt; FsEventClass(num) =&lt;br&gt;     &lt;span style="color:#0000ff;"&gt;let&lt;/span&gt; event = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DelegateEvent&amp;lt;System.EventHandler&amp;lt;System.EventArgs&amp;gt;&amp;gt;()&lt;br&gt;     &lt;br&gt;     [&amp;lt;CLIEvent&amp;gt;]&lt;br&gt;     &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; this.Event = event.Publish&lt;br&gt;             &lt;br&gt;     &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; this.Run () = &lt;br&gt;         &lt;span style="color:#0000ff;"&gt;let&lt;/span&gt; args = [| this :&amp;gt; obj ; System.EventArgs.Empty :&amp;gt; obj |]&lt;br&gt;         &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; i &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; 1 .. num &lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;&lt;br&gt;             args.[1] &amp;lt;- &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.EventArgs() :&amp;gt; obj&lt;br&gt;             event.Trigger( args )&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;And this, the C# client:&lt;/strong&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2dcf6ed5-ad9a-4cde-afbc-7e65fb9a81a1" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] args)&lt;br&gt; {&lt;br&gt;     &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; iters = 1000000;&lt;br&gt; &lt;br&gt;     &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt; fsStart = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now;&lt;br&gt;     &lt;span style="color:#2b91af;"&gt;FSharpEventingLib&lt;/span&gt;.&lt;span style="color:#2b91af;"&gt;FsEventClass&lt;/span&gt; fs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;FSharpEventingLib&lt;/span&gt;.&lt;span style="color:#2b91af;"&gt;FsEventClass&lt;/span&gt;(iters);&lt;br&gt;     &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; fsCalled = 0;&lt;br&gt;     fs.Event += (s, a) =&amp;gt; fsCalled++;&lt;br&gt;     fs.Run();&lt;br&gt;     &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt; fsEnd = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now;&lt;br&gt;     &lt;span style="color:#2b91af;"&gt;TimeSpan&lt;/span&gt; fsTime = fsEnd - fsStart;&lt;br&gt;     System.&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#2b91af;"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#a31515;"&gt;&amp;quot;F# took: {0} when called {1} times&amp;quot;&lt;/span&gt;, fsTime, fsCalled)); &lt;br&gt; }&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Finally, the program output:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;F# took: 00:00:05.6830000 when called 1000000 times&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As it turns out, the F#’s current &lt;a href="http://msdn.microsoft.com/en-us/library/ee370450.aspx"&gt;DelegateEvent&lt;/a&gt; uses a DynamicInvoke under the hood and that can slow things down quite a bit.&amp;#160; This won’t be important in most cases as Event is implemented with a standard Invoke.&amp;#160; However, in our case we had to fit to an existing C# model and so needed to do an event trigger for each resulting scanline of an image.&lt;/p&gt;  &lt;p&gt;A big thanks to James Margetson of the F# Team for the following fast replacement for DelegateEvent.&amp;#160; Within same day I had mentioned my issue he had this solution for me.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The new library contents:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:75d3ea67-e88d-4308-bffc-de81cd96ed5f" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:'Courier New', Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background-color:#ffffff;overflow:auto;padding:2px 5px;white-space:nowrap;"&gt;&lt;span style="color:#0000ff;"&gt;type&lt;/span&gt; FastDelegateEvent() =&lt;br&gt;     &lt;span style="color:#0000ff;"&gt;let&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;mutable&lt;/span&gt; multicast : System.EventHandler = &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;br&gt; &lt;br&gt;     &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; x.Trigger(sender:obj,args:System.EventArgs) =&lt;br&gt;         &lt;span style="color:#0000ff;"&gt;match&lt;/span&gt; multicast &lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;br&gt;         | &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt; ()&lt;br&gt;         | d &lt;span style="color:#0000ff;"&gt;-&amp;gt;&lt;/span&gt; d.Invoke(sender,args)   &lt;span style="color:#008000;"&gt;// DelegateEvent used: d.DynamicInvoke(args) |&amp;gt; ignore&lt;/span&gt;&lt;br&gt;  &lt;br&gt;     &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; x.Publish =&lt;br&gt;         { &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; IDelegateEvent&amp;lt;System.EventHandler&amp;gt; &lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;br&gt;             &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; x.AddHandler(d) =&lt;br&gt;                 multicast &amp;lt;- System.Delegate.Combine(multicast, d) :?&amp;gt; System.EventHandler&lt;br&gt;             &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; x.RemoveHandler(d) =&lt;br&gt;                 multicast &amp;lt;- System.Delegate.Remove(multicast, d)  :?&amp;gt; System.EventHandler }&lt;br&gt; &lt;br&gt; &lt;span style="color:#0000ff;"&gt;type&lt;/span&gt; FsFastEventClass(num) =&lt;br&gt;    &lt;span style="color:#0000ff;"&gt;let&lt;/span&gt; event = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; FastDelegateEvent()&lt;br&gt; &lt;br&gt;    [&amp;lt;CLIEvent&amp;gt;]&lt;br&gt;    &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; this.Event = event.Publish&lt;br&gt; &lt;br&gt;    &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; this.Run () =&lt;br&gt;        &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; i &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; 1 .. num &lt;span style="color:#0000ff;"&gt;do&lt;/span&gt;           &lt;br&gt;            event.Trigger(this, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; System.EventArgs())&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The program output with FastDelegateEvent:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;F# took: 00:00:00.0390000 when called 1000000 times&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This new event class completely resolved our issue.&amp;#160; With it our F# version is just as fast, if not faster, than the C# equivalent.&amp;#160; &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/2010/06/04/a-speedy-alternative-to-f-delegateevents.aspx&amp;amp;;subject=A+Speedy+Alternative+to+F%23+DelegateEvents" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.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/06/04/a-speedy-alternative-to-f-delegateevents.aspx&amp;amp;;title=A+Speedy+Alternative+to+F%23+DelegateEvents" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.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/06/04/a-speedy-alternative-to-f-delegateevents.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.aspx&amp;amp;title=A+Speedy+Alternative+to+F%23+DelegateEvents" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.aspx&amp;amp;;title=A+Speedy+Alternative+to+F%23+DelegateEvents" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.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/06/04/a-speedy-alternative-to-f-delegateevents.aspx&amp;amp;;title=A+Speedy+Alternative+to+F%23+DelegateEvents&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/06/04/a-speedy-alternative-to-f-delegateevents.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20757" 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/delegates/default.aspx">delegates</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/fsharp/default.aspx">fsharp</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/interop/default.aspx">interop</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/DelegateEvent/default.aspx">DelegateEvent</category></item><item><title>F# Discoveries This Week 05/28/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/28/f-discoveries-this-week-05-28-2010.aspx</link><pubDate>Fri, 28 May 2010 17:24:01 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20735</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20735.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20735</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20735</wfw:comment><description>&lt;p&gt;Come in and see what’s new in the F# world.&amp;#160; Every week is seems there is ever more content on an increasingly wider variety of topics.&amp;#160; The community is growing at a very fast pace.&amp;#160; Because of this, I’ve decided to change things up a bit with a new format.&amp;#160; I hope you’ll find it enhances your experience in exploring this mountain of fresh F# information.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2 align="center"&gt;News&lt;/h2&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/mulambda/archive/2010/05/15/f-on-silverlight-4.aspx"&gt;Silverlight 4 runtime has been released with F# support&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/b/mulambda/archive/2010/05/21/f-powerpack-may-2010-now-for-silverlight.aspx"&gt;The F# PowerPack 2.0.0.0 is out and supports Silverlight 3 and 4&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.intellifactory.com/blogs/adam.granicz/2010/5/22/WebSharper-2010-Standard-is-available.article"&gt;WebSharper 2010 1.0 is out and is free for commercial use&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://fsprojectextender.codeplex.com/"&gt;F# Project Extender 0.9.2.1 has been released&lt;/a&gt;&lt;/h3&gt;  &lt;h3&gt;The &lt;a href="http://www.intellifactory.com/blogs/adam.granicz/2010/3/5/Call-for-Presentations---CUFP-2010.article"&gt;CUFP 2010&lt;/a&gt; and &lt;a href="http://www.intellifactory.com/blogs/adam.granicz/2010/3/5/Call-for-Presentations---ML-2010.article"&gt;ML 2010&lt;/a&gt; Call for Presentations is active&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://www.informationweek.com/news/global-cio/trends/showArticle.jhtml?articleID=219700406&amp;amp;pgno=4#GrangeInsurance"&gt;F# is on InformationWeek 500: 20 Great Ideas To Steal&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2 align="center"&gt;Video / Audio&lt;/h2&gt;  &lt;h3&gt;&lt;a href="http://www.infoq.com/interviews/don-syme-fsharp-2_0"&gt;Don Syme Talks with Sadek Drobi About F# 2.0, a First Class Citizen in Visual Studio 2010&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;Don Syme speaks about F# 2.0, its application fields, its integration in Visual Studio 2010 and F# open source Power Pack library. Don also discusses the genesis of F#, the ties with OCaml as well as its specificity. &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.infoq.com/interviews/F-Sharp-Don-Syme"&gt;Don Syme Answering Questions on F#, C#, Haskell and Scala&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;In this interview made by InfoQ’s Sadek Drobi, Don Syme, a Senior Researcher at Microsoft Research, answers questions mostly on F#, but also on functional programming, C# generics, type classes in Haskell, similarities between F# and Scala.&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.infoq.com/presentations/The-State-of-the-Art-on-.NET"&gt;Amanda Laucher and Josh Graham – The state of the Art on .NET&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Amanda Laucher and Josh Graham present at an introductory level some of the most important elements of the .NET ecosystem: F#, M, Boo, NUnit, RhinoMocks, Moq, NHibernate, Castle, Windsor, NVelocity, Guerilla WCF, Azure, MEF. &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.dotnetrocks.com/default.aspx?showNum=560"&gt;.NET Rocks F# Panel Live from NERD Center, Cambridge, MA&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;While on the Road Trip, Carl and Richard recorded this panel discussion with Talbott Crowell, Rick Minerich and Richard Hale Shaw on F# at the Microsoft New England Research and Development Center. The panel makes a very compelling case for adding a functional language to your toolchest. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h2 align="center"&gt;Blogs&lt;/h2&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!2110.entry"&gt;Brian McNamara’s Proggit Subreddit Graph in F# and DGML&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Dear Proggit: graphs are cool, but I prefer F#, so I graphed the subreddit interconnections with F# and DGML&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;&lt;a href="http://thecodedecanter.wordpress.com/2010/05/24/implementing-map-reduce-in-f-sharp/"&gt;James’ Implementing map-reduce in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Again, F# proves to be a remarkably succinct language to express problems, in this case the built in syntactic sugar for tuples is a godsend!&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/05/f-and-standard-aspnet-mvc-2-web.html"&gt;Daniel Mohl’s F# ASP.NET MVC 2 Web Application Template&lt;/a&gt; and     &lt;br /&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/05/creating-f-solution-template-for-visual.html"&gt;Creating an F# Template for Visual Studio 2010&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Tomas Petricek recently provided a great blog post on creating MVC web applications in F#.&amp;#160; I thought it might be nice to also have a template that replicates the functionality of the standard C# ASP.NET MVC 2 Web Application template.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/05/simple-inversion-of-control-ioc.html"&gt;Daniel Mohl’s A Simple Inversion of Control (IoC) Container in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this post I will show how to build a simple Inversion of Control (IoC) container 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://bloggemdano.blogspot.com/2010/05/getting-started-with-websharper.html"&gt;Daniel Mohl’s Getting Started with WebSharper Platform 2010&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;A little while ago a cool new product was brought to my attention that allows client-based web development in F#.&amp;#160; The name of this product is WebSharper Platform 2010.&amp;#160; In this post, I will show a simple example for getting started with WebSharper Platform 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://techneilogy.blogspot.com/2010/05/computation-expressions-with-net-data.html"&gt;Neil Carrier’s Computation Expressions with .NET Data Types&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I’m still working on my proof-of-concept and it’s going well. One thing that’s been on my mind is the desire to use computation expressions in it somewhere. So I’ve been trying to make sure I understood computation expressions well enough to use them to good purpose.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/05/wow-its-been-while.html"&gt;Neil Carrier’s Active Pattern Activity&lt;/a&gt; and &lt;a href="http://techneilogy.blogspot.com/2010/05/more-active-pattern-activity.html"&gt;More Active Pattern Activity&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I have to say the F# proof of concept is still going a lot better than I had ever hoped. Not only is it easy to port the basic algorithms from C# where applicable, but the kind of straightforward design that “functional-thinking” encourages is making for a better program with much less source 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://www.trelford.com/blog/post/Exposing-F-Dynamic-Lookup-to-C-WPF-Silverlight.aspx"&gt;Phillip Trelford’s Exposing F# Dynamic Lookup to C#, WPF and Silverlight&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Sometimes dynamic typing can be a pragmatic way of solving a specific problem. For example say you’re a solutions provider with a core product and have a number of clients with bespoke requirements. One client asks for a product rating feature. This can be relatively easily achieved using dynamic properties:&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.trelford.com/blog/post/F-operator-overloads-for-WPF-dependency-properties.aspx"&gt;Phillip Trelford’s F# operator overloads for WPF dependency properties&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Creating WPF elements directly from F# can produce good self-contained code, but at time is a little less readable than the XAML equivalent. Lets consider placing a button bound to a command on a grid at a certain position.&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.simple-talk.com/community/blogs/clivet/archive/2010/05/20/91425.aspx"&gt;Clive Tong’s Towards an F# .NET Reflector add-in&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;When I had the opportunity to spent some time during Red Gate's recent &amp;quot;down tools&amp;quot; week on a project of my choice, the obvious project was an F# add-in for Reflector.&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.simple-talk.com/community/blogs/clivet/archive/2010/05/20/91426.aspx"&gt;Clive Tong’s F# and the rose-tinted reflection&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;We're already seeing increasing use of many cores on client desktops. It is a change that has been long predicted.&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/05/15/technical-analysis-indicators-in-f-metadata-reflection"&gt;Julien Ortin’s Technical analysis indicators in F# – Metadata and Reflection&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In this part, we show how to use reflection to fetch the metadata attributes we have described in the first part of the technical analysis series.&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://stevegilham.blogspot.com/2010/05/f-excessively-lazy-sequences-and.html"&gt;Steve Gilham’s F# - excessively lazy sequences and stateful visitors&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Doing something a little bit complicated here: the functional equivalent of a visitor pattern, where I want to apply a few functions to a long and potentially expensive to traverse sequence of items (so ruling out a series of iterations over the visited nodes)&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://fsharpnews.blogspot.com/2010/05/mini-hash-table.html"&gt;Jon Harrop’s Mini hash table&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Imagine you're stuck on a desert island with only a few keystrokes and you desperately need to create your own rudimentary hash table. What might you do?&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/b/jomo_fisher/archive/2010/05/25/how-to-enumerate-all-wmi-classes.aspx"&gt;Jomo Fisher’s How to Enumerate all WMI Classes&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This is the F# code you would use to enumerate all WMI classes on your system and show the properties of each. of each. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://ugh.cc/f-short-hand-syntax-for-maps-and-sets/"&gt;Fredrik Holmstrom’s F# short hand syntax for maps and sets&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p align="left"&gt;&lt;em&gt;I’ve always though it a shame that there is no in language short hand syntax for maps and sets in F#, something like {{foo = 1; bar = 2}} and {#1, 2#} – but having a very flexible language at my disposal I set out to find some way to achieve this, mostly for fun – but maybe someone will find a practical use of it.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="left"&gt;&amp;#160;&lt;/p&gt;  &lt;h2 align="center"&gt;Community&lt;/h2&gt;  &lt;h3&gt;&lt;a href="http://stackoverflow.com/questions/2905081/scala-versus-f-question-how-do-they-unify-oo-and-fp-paradigms"&gt;From StackOverflow: Scala vs F#, How do they unify OO and FP?&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;What are the key differences between the approaches taken by Scala and F# to unify OO and FP paradigms?&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/2840714/f-static-member-type-constraints"&gt;From StackOverflow: F# Static Member Type Constraints&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I'm trying to define a function, factorize, which uses structural type constraints (requires static members Zero, One, +, and /) similar to Seq.sum so that it can be used with int, long, bigint, etc. I can't seem to get the syntax right, and can't find a lot of resources on the subject. This is what I have, please help.&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/28/f-discoveries-this-week-05-28-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+05%2f28%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/28/f-discoveries-this-week-05-28-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/28/f-discoveries-this-week-05-28-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f28%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/28/f-discoveries-this-week-05-28-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/28/f-discoveries-this-week-05-28-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/28/f-discoveries-this-week-05-28-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/28/f-discoveries-this-week-05-28-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+05%2f28%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/28/f-discoveries-this-week-05-28-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/28/f-discoveries-this-week-05-28-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f28%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/28/f-discoveries-this-week-05-28-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/28/f-discoveries-this-week-05-28-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f28%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/28/f-discoveries-this-week-05-28-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20735" 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/Visual+Studio/default.aspx">Visual Studio</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/lazy/default.aspx">lazy</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/mapreduce/default.aspx">mapreduce</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/powerpack/default.aspx">powerpack</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/cufp/default.aspx">cufp</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/WebSharper/default.aspx">WebSharper</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Dynamic+Lookup/default.aspx">Dynamic Lookup</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/metaprogramming/default.aspx">metaprogramming</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/refactor/default.aspx">refactor</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Active+Patterns/default.aspx">Active Patterns</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Computation+Expressions/default.aspx">Computation Expressions</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IoC/default.aspx">IoC</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/ML/default.aspx">ML</category></item><item><title>F# Discoveries This Week 05/14/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx</link><pubDate>Fri, 14 May 2010 21:06:49 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20671</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20671.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20671</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20671</wfw:comment><description>&lt;p&gt;Today, I’d like to thank all of the F# users on twitter.&amp;#160; &lt;/p&gt;  &lt;p&gt;Twitter’s a great place to stay up to date on the latest F# happenings and many of the posts you see here are either written by or passed on from members of this community.&amp;#160; So, if you are interested in becoming part of the &lt;a href="http://twitter.com/rickasaurus/f-fsharp-users"&gt;F# Twitter Community&lt;/a&gt;, I suggest starting with these frequent F# tweeters: &lt;a href="http://twitter.com/dmohl"&gt;@dmohl&lt;/a&gt;, &lt;a href="http://twitter.com/TigerHasse"&gt;@TigerHasse&lt;/a&gt;, &lt;a href="mailto:r@robertpi,@sforkmann"&gt;@robertpi&lt;/a&gt;, &lt;a href="http://twitter.com/sforkmann"&gt;@sforkmann&lt;/a&gt;, and &lt;a href="http://twitter.com/ptrelford"&gt;@ptrelford&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’ve also been known to &lt;a href="http://twitter.com/rickasaurus"&gt;occasionally tweet&lt;/a&gt; on F# and other programming topics.&amp;#160; Now, on to the links.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!2080.entry"&gt;Brian McNamara’s More F# Screencasts&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;My previous two screencasts (‘Getting started with F# in VS2010’ and ‘Editing F# source code in VS2010’) have been moved to MSDN, which means they’re now available in a variety of video formats.&amp;#160; A new screencast (‘Managing F# projects in VS2010’) has also been added, so check it out!&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://strangelights.com/blog/archive/2010/05/14/1660.aspx"&gt;Robert Pickering’s F# Talks in London&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I’ve been in London for the past few days. I arrived Tuesday afternoon and gave at talk at “The F#unctional Londoners Meetup Group” on the Tuesday evening. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee310028.aspx"&gt;James McCaffrey’s Combinations and Permutations with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Understanding combinations and permutations is a fundamental skill in software testing. In this month’s Test Run column I show you how to work with combinations and permutations using code written in the new F# language.&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.infoq.com/presentations/Pragmatic-F-Sharp-in-Action"&gt;Amanda Laucher and Josh Graham’s Pragmatic F# in Action (video)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Amanda Laucher and Josh Graham introduce the audience to F# basics showing some of its main features, emphasizing what makes it better than imperative languages.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://tomasp.net/blog/fsharp-mvc-web.aspx"&gt;Tomas Petricek’s ASP.NET and F# Part 1 – Creating MVC Web Applications in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;If you want to use F# for creating an MVC application, you have a few options. It should be possible to create the web application solely as an F# project. However, we'll use a more convenient approach. We'll create a standard C# MVC project and move all the actual implementation to an F# library.&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/05/12/fake-f-make-1-20-0-released/"&gt;Steffen Forkmann’s FAKE – F# Make 1.20.0 Released&lt;/a&gt; and     &lt;br /&gt;&lt;a href="http://www.navision-blog.de/2010/05/07/using-a-mailboxprocessor-to-speedup-fake-f-make/"&gt;Using a MailboxProcessor to speedup “FAKE – F# MAKE”&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Today I released a new bugfix release for “FAKE – F# Make”. We fixed some path and logging issues and as a new feature we introduced the @@ operator which allows to combine paths.&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/Trading-on-IM-with-F.aspx"&gt;Phillip Trelford’s Trading on IM with F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The slides from my Trading on IM talk will be attached to this post, and the video/podcast should be appear on the Skills Matter website. I’ll also attach the 100 lines of code for shopping checkout sample, that works with a barcode scanner, I showed at the start of my presentation.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/05/integrating-f-and-erlang-using-otpnet.html"&gt;Daniel Mohl’s Integrating F# and Erlang Using OTP.NET&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Recently, I ran across a post that talked about a .NET library named OTP.NET.&amp;#160; OTP.NET is a port of a Java library named JInterface that allows a .NET application to act as an Erlang node.&amp;#160; OTP.NET hasn't been updated in a while and the API is a bit clunky, but the provided functionality is very cool.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h5&gt;&amp;#160;&lt;/h5&gt;  &lt;h3&gt;Nick Grattan’s &lt;a href="http://nickgrattan.wordpress.com/2010/05/09/creating-web-parts-with-f/"&gt;Creating Web Parts with F#&lt;/a&gt; and     &lt;br /&gt;&lt;a href="http://nickgrattan.wordpress.com/2010/05/12/an-edsl-for-emitting-html-tables-in-web-parts-using-f-3/"&gt;An EDSL for Emitting HTML Tables in Web Parts using F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;When writing web parts in C# for SharePoint the System.Web “table” class or “table” HTML elements are most often used for controlling layout (“div” aficionados keep your ears covered…). The code quickly gets ugly and difficult to manage – there’s no direct control to ensure correct matching of opening and closing of tags. So how about writing an EDSL that provides a syntax and constructs for doing this?&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/05/tiny-expert-system-using-monads.html"&gt;Neil Carrier’s Tiny Expert System using Monads&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Below is a tiny expert system implemented using computation expressions. I managed to find a way to use the following computation expression methods: Bind, Delay, and Return.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Neil Carrier’s &lt;a href="http://techneilogy.blogspot.com/2010/05/simple-dsl-tokenization-to-evaluation.html"&gt;A Simple DSL: Tokenization to Evaluation&lt;/a&gt;,     &lt;br /&gt;&lt;a href="http://techneilogy.blogspot.com/2010/05/s-expressions-for-semantic-networks.html"&gt;S-Expressions for Semantic Networks&lt;/a&gt; and     &lt;br /&gt;&lt;a href="http://techneilogy.blogspot.com/2010/05/half-baked-scheme.html"&gt;A Half-Baked Scheme&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;This post presents a small example of the above process. It implements a small interpreter which analyzes and evaluates LISP-like prefix expressions involving integers, multiplication, and division. For example: (+ (* 1 2) (* 3 4) evaluates to a data element containing the number 14. To make clear what is happening, be sure and examine the value of tokenList before it is evaluated. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&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/05/05/technical-analysis-indicators-in-f-bands"&gt;Bands&lt;/a&gt;, &lt;a href="http://lepensemoi.free.fr/index.php/2010/05/10/technical-analysis-indicators-in-f-signal"&gt;Signal&lt;/a&gt; and &lt;a href="http://lepensemoi.free.fr/index.php/2010/05/10/technical-analysis-indicators-in-f-ehlers"&gt;Ehlers&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://fsharp-euler.wikispaces.com/"&gt;Yin Zhu’s F# for Project Euler Problems&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Some problems have two versions of solutions, the version I first learned F# and the version based on my current knowledge of F#. The first version is usually quite easy to understand even if the reader does not know F#, while the second uses some nice F# feature or good functional programming practice in general.&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/05/java-vs-f.html"&gt;Jon Harrop’s Java vs. F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;What Cliff forgot to mention is that .NET also provides value types and a far more compelling example than complex numbers is the humble hash table.&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/timng/archive/2010/05/06/f-wpf-events.aspx"&gt;Tim Ng’s F# + WPF + Events&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I recently had to do some travelling for the VS launch event in Las Vegas and QCON event in Beijing. One of the things thats nice about travelling is that it gives you time to do some things you may not otherwise do - in my case, I had a chance to try to (re) learn WPF and see how I can use F# with WPF.&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/05/10/f-tacit-programming/"&gt;Mark Needham’s Tacit Programming&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I realised that this approach quite closely describes what I've been trying to drive towards in my most recent playing around with F# and it's actually quite fun trying to drive any intermediate state or storing of data in variables out of a program and just relying completely on function composition and higher order functions.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://dotnet.dzone.com/news/f-my-current-coding-approach"&gt;Mark Needham’s F#: My current coding approach&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I spent a bit of time over the weekend coding a simple generic builder for test objects in F# and I noticed that although there were similarity with the ways I drive code in C# or Java my approach didn't seem to be exactly the same.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://continuousdevelopment.wordpress.com/2010/05/13/f-vs-c-samples/"&gt;Ebru Cucen’s F# vs C# Samples&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;After my talk at ldnUG yesterday, I got nice suggestions from Zi Makki, and here is the first one: comparison between F# and C#, especially using LINQ. This subject had been quite popular once in a while, now it is probably my time to focus on this subject.&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.bjoernrochel.de/2010/05/12/kata-stringcalculator-in-f/"&gt;Bjorn Rochel’s Kata StringCalculator in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Two meetings ago we decided to do some coding on every meeting. The previous meeting we solved Kata FizzBuzz and on yesterday’s meeting we tried to dance with Roy Osheroves Kata StringCalculator.&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/gunnarpeipman/archive/2010/05/12/f-in-asp-net-mathematics-and-testing.aspx"&gt;Gunnar Peipman’s F# in ASP.NET, mathematics and testing&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Starting from Visual Studio 2010 F# is full member of .NET Framework languages family. It is functional language with syntax specific to functional languages but I think it is time for us also notice and study functional languages. In this posting I will show you some examples about cool things other people have done using 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://langexplr.blogspot.com/2008/02/defining-mutually-recursive-classes-in.html"&gt;Luis Diego Fallas’s Defining mutually recursive classes in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As explained in Adventures in F#--Corecursion defining mutually recursive functions requires the use of the &lt;code&gt;and&lt;/code&gt; keyword between function definitions. As briefly mentioned in the Type Definitions section of the manual, the &lt;code&gt;and&lt;/code&gt; keyword can also be used in types.&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.msdev.com/Directory/Description.aspx?EventId=1846"&gt;Nancy Strickland’s New Features in F# 2.0 Training Video&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Describes the new features in F# version 2.0, which comes included in 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://partialclass.blogspot.com/2010/05/dotnetrocks-in-boston.html"&gt;DotNetRocks in Boston (with F# Panel)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The panel suggested we add F# to our repertoire and understand its strengths, and use it where it's beneficial. I'm going to take that advice. Bottom line is if I can replace 50 lines of confusing C# code with 10 lines of elegant F#, I've done myself a service.&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/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+05%2f14%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-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/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f14%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-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/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-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/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+05%2f14%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-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/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f14%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-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/14/f-discoveries-this-week-05-14-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+05%2f14%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/05/14/f-discoveries-this-week-05-14-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20671" 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/asp.net/default.aspx">asp.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/math/default.aspx">math</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/dsl/default.aspx">dsl</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/twitter/default.aspx">twitter</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/SharePoint/default.aspx">SharePoint</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/monad/default.aspx">monad</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/technical+analysis/default.aspx">technical analysis</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Euler/default.aspx">Euler</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/kata/default.aspx">kata</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Web+Parts/default.aspx">Web Parts</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/screencasts/default.aspx">screencasts</category></item><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 04/16/2010</title><link>http://www.atalasoft.com/cs/blogs/rickm/archive/2010/04/16/f-discoveries-this-week-04-16-2010.aspx</link><pubDate>Fri, 16 Apr 2010 18:16:13 GMT</pubDate><guid isPermaLink="false">647108ca-f046-4d8d-9feb-a7fbd2049b37:20507</guid><dc:creator>RickM</dc:creator><slash:comments>1</slash:comments><comments>http://www.atalasoft.com/cs/blogs/rickm/comments/20507.aspx</comments><wfw:commentRss>http://www.atalasoft.com/cs/blogs/rickm/commentrss.aspx?PostID=20507</wfw:commentRss><wfw:comment>http://www.atalasoft.com/cs/blogs/rickm/rsscomments.aspx?PostID=20507</wfw:comment><description>&lt;p&gt;It’s finally here.&amp;#160; After years of work, F# 2.0 is out and ready to change the way you program in .NET.&amp;#160; Come in for launch information, updates to projects written in F# and some great posts on actually using the language.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://blogs.msdn.com/dsyme/archive/2010/04/12/f-2-0-released-as-part-of-visual-studio-2010.aspx"&gt;Don Syme’s F# 2.0 Released!&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;F# is a productive functional and object-oriented programming language for .NET that enables users to write simple code to solve complex problems. Its succinct syntax and powerful type inference lets users stay closer to the domain they are working in, and the integration into .NET and Visual Studio gives rich access to the expansive .NET platform.&lt;/em&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Other Posts on the F# Launch&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://research.microsoft.com/en-us/news/features/fsharp-041310.aspx"&gt;Rob Knies’s F#: Putting the ‘Fun’ into ‘Functional’&lt;/a&gt;      &lt;br /&gt;&lt;a href="http://www.itjoblog.co.uk/2010/04/microsoft-f.html"&gt;Tim Anderson’s Why Microsoft F# is worth exploring&lt;/a&gt;      &lt;br /&gt;&lt;a href="http://blog.andresays.org/2010/04/f-microsofts-new-functional-language/"&gt;Andre Burdette’s F#: Microsoft’s new functional language&lt;/a&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/lisa/archive/2010/04/16/vs-2010-keyboard-shortcut-posters-now-available-for-vb-c-f-c.aspx"&gt;Lisa Feigenbaum’s VS 2010 Keyboard Shortcut Posters Now Available for VB, C#, F# &amp;amp; C++&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The Visual Studio keyboard shortcut posters are always very popular and are now available for Visual Studio 2010! Please choose the one that corresponds to your choice of Visual Studio Development Settings. Print out a poster to place on the wall, or a quick reference card to keep on your desk.&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/chrsmith/archive/2010/04/13/good-news-and-sad-news-leaving-microsoft.aspx"&gt;Chris Smith’s Good News and Sad News - Leaving Microsoft&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;For me at least, the excitement and buzz of the Visual Studio 2010 launch will be short lived. Earlier this month I’ve accepted a position at another software company and will be leaving Microsoft. […]&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;However, I will still be part of the F# community and you will definitely see a second edition of Programming F# when the time comes.&amp;#160; &lt;strong&gt;In fact, next Tuesday 4/20 I’ll be giving a talk: &lt;/strong&gt;&lt;/em&gt;&lt;a href="http://www.communityforfsharp.net/april-2010-live-meeting-detail"&gt;&lt;em&gt;&lt;strong&gt;Writing a Java to x86 Compiler in F#&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;strong&gt; at 11:00AM PST.&lt;/strong&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://www.navision-blog.de/2010/04/13/fake-f-sharp-make-and-naturalspec-released/"&gt;Steffen Forkmann’s “FAKE – F# Make” and NaturalSpec 1.0 Released&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Yesterday Microsoft released the RTM versions of Visual Studio 2010, .NET Framework 4.0 and F# 2.0.0.0 and so it is time to announce the first official releases of “Fake – F# Make” and NaturalSpec. Both projects are now compatible with Visual Studio 2010 RC and RTM and the corresponding F# versions.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://fsharprefactor.codeplex.com/"&gt;F# Refactor (No Release Yet, Check out the Repository)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Deisgned to bring Code Refactoring capabilities to the F# Language in Visual Studio 2010.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Brian McNamara’s &lt;a href="http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!1886.entry"&gt;Using VS2010 to edit F# source code (and a little LOGO EDSL)&lt;/a&gt; and &lt;a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!1895.entry"&gt;Fun with turtle-graphics in F#&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;The code on the screen during the video is a little &lt;/em&gt;&lt;em&gt;EDSL&lt;/em&gt;&lt;em&gt; (Embedded Domain-Specific Language) for a subset of LOGO.&amp;#160; The full code is below; you can just copy it into an F# application project to run 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://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!1882.entry"&gt;Brian McNamara and Chris Smith’s Alt.NET Workshop slides and code&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Chris and I each had our own slide deck, so to go in order you’ll have to switch back and forth between the two decks, like we did during the talk (Chris’s intro, my part on functional programming, Chris’s section on OO programming, my part on Async, Chris’s case study).&amp;#160; At the end of my deck there’s also some bonus slides on units of measure that we didn’t have time for.&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://www.sdtimes.com/link/34251"&gt;David Worthington’s ‘Midori’ concepts materialize in .NET&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&amp;quot;Midori is an attempt to create a new foundation for the operating system that runs ‘inside the box,’ on the desktop and in the rack. &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/04/sliding-block-puzzle-in-f-and-wpf.html"&gt;Neil Carrier’s Sliding Block Puzzle in F# and WPF&lt;/a&gt; and     &lt;br /&gt;&lt;a href="http://techneilogy.blogspot.com/2010/04/simple-wpf-animation.html"&gt;Simple WPF Animation&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I realized that I wanted something more visual with which to test my search algorithms. I have also been wanting to learn how to write WPF applications using F#. To that end, I offer the following F#/WPF application of the famous Fifteen Puzzle, the ancestor of all sliding-block puzzles.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;&amp;#160;&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://techneilogy.blogspot.com/2010/04/generic-binary-heap.html"&gt;Neil Carrier’s Generic Binary Heap&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I'm pretty sure I'm going to need a priority queue for my A* search, so I decided to code a generic heap class in F#. The F# code below is largely a translation from Robert Sedgewick's Algorithms in C (Parts 1-4).&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/Whate28099s-happening-Loosely-coupled-events.aspx"&gt;Phillip Trelford’s What’s happening? Loosely coupled events&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;For example if you wanted to publish an event from any window that could be observed by any other window without them all having intimate knowledge of each other.&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/Implementing-IObservable-and-extending-Observable.aspx"&gt;Phillip Trelford’s Implementing IObservable and extending Observable&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Following on from my post yesterday on implementing loosely coupled events; the following somewhat longer F# sample provides a simple System.IObservable&amp;lt;T&amp;gt; implementation for event consumers.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/04/distributed-hash-table-dht-in-f-using.html"&gt;Daniel Mohl’s A DHT in F#: Using Higher Order Functions for the Service Operation Calls&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;In my last post, I provided a start to a distributed hash table in F# using WCF.&amp;#160; One of the major limitations of that example was that only two nodes could ever be on the node network at a given time.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://bloggemdano.blogspot.com/2010/04/talking-to-couchdb-via-f-and-symbiote.html"&gt;Daniel Mohl’s Talking to CouchDB via F# and Symbiote&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;Alex Robson recently announced a set of libraries that, among other things, makes talking with CouchDB from a .NET language very easy. […] As you can see, interacting with CouchDB via F# and Symbiote is a snap.&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/mailboxprocessors-erlang-style.html"&gt;Vladimir Matveev’s MailboxProcessors: Erlang-style concurrency&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;MailboxProcessor is combination of message queue and message handler build atop of Asyncs infrastructure.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://geekswithblogs.net/MarkPearl/archive/2010/04/13/f-and-the-useful-infinite-sequence-i-think.aspx"&gt;Mark Pearl’s F# and the useful infinite Sequence (I think)&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;So the question is begged - how would you create a sequence that you are sure will be large enough to hold the solution to the problem? Well… You can’t know!&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/04/12/f-the-defaultarg-function/"&gt;Mark Needham’s F#: The ‘defaultArg’ function&lt;/a&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;While reading through an old blog post by Matthew Podwysocki about writing F# code in a functional rather than imperative way I came across the 'defaultArg' function which I haven't seen previously.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;   &lt;blockquote&gt;     &lt;p&gt;&lt;a href="http://blog.andresays.org/2010/04/f-microsofts-new-functional-language/"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/h3&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/04/16/f-discoveries-this-week-04-16-2010.aspx&amp;amp;;subject=F%23+Discoveries+This+Week+04%2f16%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/04/16/f-discoveries-this-week-04-16-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/04/16/f-discoveries-this-week-04-16-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+04%2f16%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/04/16/f-discoveries-this-week-04-16-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/04/16/f-discoveries-this-week-04-16-2010.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/04/16/f-discoveries-this-week-04-16-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/04/16/f-discoveries-this-week-04-16-2010.aspx&amp;amp;title=F%23+Discoveries+This+Week+04%2f16%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/04/16/f-discoveries-this-week-04-16-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/04/16/f-discoveries-this-week-04-16-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+04%2f16%2f2010" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/04/16/f-discoveries-this-week-04-16-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/04/16/f-discoveries-this-week-04-16-2010.aspx&amp;amp;;title=F%23+Discoveries+This+Week+04%2f16%2f2010&amp;amp;;top=1" target="_blank" title = "Post http://www.atalasoft.com/cs/blogs/rickm/archive/2010/04/16/f-discoveries-this-week-04-16-2010.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.atalasoft.com/cs/aggbug.aspx?PostID=20507" 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/NaturalSpec/default.aspx">NaturalSpec</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/data+structures/default.aspx">data structures</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/Infinite+Sequences/default.aspx">Infinite Sequences</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/IObservable/default.aspx">IObservable</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/Mailboxes/default.aspx">Mailboxes</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/F_2300_+2.0/default.aspx">F# 2.0</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/keyboard+shortcuts/default.aspx">keyboard shortcuts</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/LOGO/default.aspx">LOGO</category><category domain="http://www.atalasoft.com/cs/blogs/rickm/archive/tags/refactor/default.aspx">refactor</category></item></channel></rss>