Friday, April 16, 2010 2:16 PM
by
RickM
F# Discoveries This Week 04/16/2010
It’s finally here. After years of work, F# 2.0 is out and ready to change the way you program in .NET. Come in for launch information, updates to projects written in F# and some great posts on actually using the language.
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.
Other Posts on the F# Launch
Rob Knies’s F#: Putting the ‘Fun’ into ‘Functional’
Tim Anderson’s Why Microsoft F# is worth exploring
Andre Burdette’s F#: Microsoft’s new functional language
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.
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. […]
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. In fact, next Tuesday 4/20 I’ll be giving a talk: Writing a Java to x86 Compiler in F# at 11:00AM PST.
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.
Deisgned to bring Code Refactoring capabilities to the F# Language in Visual Studio 2010.
The code on the screen during the video is a little EDSL (Embedded Domain-Specific Language) for a subset of LOGO. The full code is below; you can just copy it into an F# application project to run it.
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). At the end of my deck there’s also some bonus slides on units of measure that we didn’t have time for.
"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.
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.
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).
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.
Following on from my post yesterday on implementing loosely coupled events; the following somewhat longer F# sample provides a simple System.IObservable<T> implementation for event consumers.
In my last post, I provided a start to a distributed hash table in F# using WCF. One of the major limitations of that example was that only two nodes could ever be on the node network at a given time.
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.
MailboxProcessor is combination of message queue and message handler build atop of Asyncs infrastructure.
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!
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.