“F# for Numerics” released

Flying Flog Consulting have recently published F# for Numerics. Here's how they describe the library: Our new F# for Numerics library is a suite of numerical methods that leverage functional programming with F#... This library implements numerical methods from a variety of different disciplines in a uniform way ...: Local and global function minimization and … Continue reading “F# for Numerics” released

From Script to .NET Component: Huffman Coding with F#

Luke Hoban has a very nice blog entry that shows an implementation of Huffman Coding with F#. This not only shows of F# as an algorithmic problem-solving language, but, just as importantly, shows just how elegant and smooth it is to take this code and produce a .NET object-oriented component that encapsulates a Huffman encoder for use from other .NET … Continue reading From Script to .NET Component: Huffman Coding with F#

F# 1.9.4 Now Available: Making F# Simpler and More Consistent

 [ Note: we have made a minor update to 1.9.4 called 1.9.4.19. The download links below point to this release. If you need 1.9.4.17 go to our downloads page. ]    [ Note: download links updated to point to the MSI correctly ]   We're very glad to announce the release of F# 1.9.4, the Spring Refresh of F#, uploaded … Continue reading F# 1.9.4 Now Available: Making F# Simpler and More Consistent

Kean Walmsley on using F# Asynchronous Workflows to simplify concurrent programming in AutoCAD

On Friday Kean Walmsley posted an excellent article on Using F# Asynchronous Workflows to simplify concurrent programming in AutoCAD.I've quoted some it below. There are two things I especially like about this post. First, Kean's code is very clean and some of the best F# app-extension scripting I've seen. Second, Kean took the time to highlight the minor … Continue reading Kean Walmsley on using F# Asynchronous Workflows to simplify concurrent programming in AutoCAD

Update to the F# 1.9.3 Release

Hi all, An update to the F# 1.9.3 release has been posted to the Microsoft Research Downloads site. Additional changes between1.9.3.7 and 1.9.3.14 are: Constructed classes may now be mutually recursive with other types, fixing an incompletness in the language implementation The Microsoft.FSharp.Core.Func module is deprecated (this contained a few rarely used functions related to … Continue reading Update to the F# 1.9.3 Release

Greg Neverov: Software Transactional Memory for F#

Greg Neverov (of active patterns fame) has placed an implementation of Software Transactional Memory for F# up on hubFS. Here's the description: I have written a library for using software transactional memory in F#. The library exposes memory transactions as a monad using F#’s new computation expression feature. It can be downloaded here. Software transactional … Continue reading Greg Neverov: Software Transactional Memory for F#

Learning WPF through F#, and vice versa, by John Liao

John Liao has an interesting series of F# programming posts, with lots of samples. Many of the WPF topics are taken from Petzold's book Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation. Interactive exploration of .NET XML programing with F# Learning WPF with F# Learning WPF - Working with Brush … Continue reading Learning WPF through F#, and vice versa, by John Liao

The FParsec library by Stephan Tolksdorf

Stephan Tolksdorf has been a regular F# user of late and has provided us with much excellent feedback, including bug reports and design suggestions. Stephan has just announced version 0.4 of FParsec, an F# adaptation of Parsec, the popular parser combinator library for Haskell by Microsoft Research's very own Daan Leijen. Stephan describes it in … Continue reading The FParsec library by Stephan Tolksdorf

Using Parallel Extensions from F#

A couple of weeks ago saw the release of the CTP of the Parallel Extensions to the .NET Framework (download), This is one the major technologies currently under development at Microsoft for parallel and concurrent programming and provides a great mix of core technologies such as the Task Parallel Library (TPL) and highly expressive programmer devices such … Continue reading Using Parallel Extensions from F#

Full Release Notes for F# 1.9.3.7 and 1.9.3.14

I'm glad to say that a release candidate for  F# 1.9.3 is now available (download via main post). The changes up to 1.9.3.7 are documented further below. Additional changes between1.9.3.7 and 1.9.3.14 are: Constructed classes may now be mutually recursive with other types, fixing an incompletness in the language implementation Microsoft.FSharp.Core.Func module is deprecated (this … Continue reading Full Release Notes for F# 1.9.3.7 and 1.9.3.14

F# 1.9.3 Candidate Release Now Available!

[ Update: The release candidate has been updated to F# 1.9.3.14. The additional changes are documented with the release notes below ] I'm very glad to say that an updated release candidate for  F# 1.9.3 is now available (MSI, ZIP). This is F# 1.9.3.14. Here are the full release notes for 1.9.3.14. This is primarily a stabilization … Continue reading F# 1.9.3 Candidate Release Now Available!

Making use of F#’s math libraries together with Z3

Byron Cook, of Terminator fame, has just been looking at using F# in conjunction with the Z3 theorem prover, a great new .NET and native component out of Microsoft Research Redmond. Recent work on F#'s math libraries, together with the latest release of Z3 make for a pretty powerful mixture. In particular I find it … Continue reading Making use of F#’s math libraries together with Z3

F# at TechEd Developer: Tomas and Luke at Ask the Experts

Yesterday I mentioned that F# is making an appearance at TechEd Developer this week. As part of this you have the chance to meet the one and only Tomáš Petříček who is helping out on the Visual Studio Ask the Experts booth for the week along with Luke Hoban and myself. Tomas is one of the most … Continue reading F# at TechEd Developer: Tomas and Luke at Ask the Experts

How to write an Autodesk Inventor Add-In using F#

Daniele over on hubFS has been doing interesting things with AutoDesk and F# in the last few days. Take a look at this link: How to write an Autodesk Inventor Add-In using F# Coincidentally, Kean Walmsley has written his first AutoCAD application using F# and has just followed up with A mathematical F# application integrating with AutoCAD … Continue reading How to write an Autodesk Inventor Add-In using F#

F# At TechEd Developers in Barcelona

I've just arrived in Barcelona, for TechEd Developers. What an event! First, on the product side, there are just so many great things going on: Visual Studio 2008 is on show, the Microsoft Sync Framework has been announced, the ultra-cool Popfly shows how non-traditional development can be on the client side, as well as the host of … Continue reading F# At TechEd Developers in Barcelona

Software Development Engineer in Test: Position on the F# Team

The F# team is hiring! This position is for a QA engineer on the F# team. From the Microsoft website: We are looking for an experienced Software Design Engineer in Test to work on testing the F# language and compiler. Opportunities include working with some of the brightest minds in the community on the latest … Continue reading Software Development Engineer in Test: Position on the F# Team

Software Development Engineer Position on the F# Team

The F# team are hiring! We have two positions open right now. The first is a software development engineer specializing in Visual Studio.  We’re looking for an exceptional developer to work on integration with the Visual Studio editor and debugger, and with Technical Computing libraries. You will be a key designer/engineer on our team, responsible … Continue reading Software Development Engineer Position on the F# Team

Robert on “Understanding how Asynchronous Workflows Work”

Robert Pickering has just posted a nice blog entry showing how programs look if you don't have asynchronous workflows. As Don Syme points out in his piece on asynchronous workflows, they are not about getting the whole of concurrency right but rather about getting asynchronous I/O right.  I think that to fully appreciate the beauty … Continue reading Robert on “Understanding how Asynchronous Workflows Work”

Position Available: Research Software Developer at MSR Cambridge

SLAyer is a software analysis tool that automatically proves properties about the data-structures constructed/modified by concurrent systems-level code.  Terminator is an additional componenet designed to prove termination and liveness properties.  The joint SLAyer/Terminator team is looking for a developer interested in building the first production version of these tools. This position is in Microsoft’s Research … Continue reading Position Available: Research Software Developer at MSR Cambridge

Introducing F# Asynchronous Workflows

[ Update: Robert pickering has a very nice summary of using asynchonous workflows with web services ] F# 1.9.2.9 includes a pre-release of F# asynchronous workflows. In this blog post we'll take a look at asynchronous workflows and how you might use them in practice. Asynchronous workflows are an application of F#'s computation expression syntax. … Continue reading Introducing F# Asynchronous Workflows

F# Job at MSR Cambridge: Software Engineer in Data Mining and Machine Learning

[ Note: this particular position has now been filled - thanks! ]   A position has arisen within the Applied Games Team at MSR Cambridge for a Software Development Engineer (SDE).  The role of the SDE will be to design, implement and maintain solutions based on new technology in the very competitive web search and … Continue reading F# Job at MSR Cambridge: Software Engineer in Data Mining and Machine Learning

Some Details on F# Computation Expressions

One of the things we added to F# in version 1.9.2 is a syntax for computation expressions. These are a generalization of the sequence expressions added in F# 1.9.1.  In this post I'll drill down on some more technical details on sequence expressions and computation expressions, as a preliminary for later posts showing their use. If you're new to … Continue reading Some Details on F# Computation Expressions

F#/OCaml Job at Microsoft: Static Driver Verifier and PreFast for Drivers

Vlad Levin from the Static Driver Verifier team at Microsoft has posted a job announcement for a software verification engneer using F#/OCaml. Here are some excerpts: Are you interested in working on cutting edge program analysis tools to find bugs in source code? Do you want to help get rid of those pesky blue screens … Continue reading F#/OCaml Job at Microsoft: Static Driver Verifier and PreFast for Drivers

Jason Hogg implements the SecPAL for simplified English grammar in F#

Jason Hogg is one of the Microsoft incubation team members behind the SecPAL project, a joint intiative between Microsoft Research Cambridge and the incubation teams in Redmond. He's just recently been using F# to write the simplified English grammar parser for the project. One of the great strengths of SecPAL is its unique support for … Continue reading Jason Hogg implements the SecPAL for simplified English grammar in F#

Robert on “Recalculating Values Only When Dependencies Change”

Robert Pickering has just posted his second article on the topic of incremental evaluation in F#.  His first article is here. His first article is here. In his second article he looks at testing code that prices European options. To quote: I decided to use the idea of pricing european options, since it’s similar to … Continue reading Robert on “Recalculating Values Only When Dependencies Change”

New Codeplex Project: F# Programming Samples

Granville Barnett has started a new CodePlex project called "F# Samples", at http://www.codeplex.com/fsharpsamples. I think everyone is welcome to join the project and contribute to the samples. Here's how Granville described it: Hi Don,   FYI, I’ve set up a samples project for F# stuff on CodePlex to try and educate more programmers about the benefit … Continue reading New Codeplex Project: F# Programming Samples

Introducing “use” bindings in F# 1.9.2

F# 1.9 is seeing the rollout of a number of additions to the F# language, and this is the first of a series of blog entries on these.  For starters, the 1.9.2 release has seen the addition of "use" bindings. Here is a simple example:     let writePlayList() =         use outp = File.CreateText(@"playlist.txt")     … Continue reading Introducing “use” bindings in F# 1.9.2

Full Release Notes for F# 1.9.2.7

Here are the full release notes for F# 1.9.2.7. Slicing syntax The following syntax forms     expr := ...           | e1.[range1]           | e1.[range1,range2]       range := e2..e3            | ..e3            | e2..            | * represent slicing from a 1D or 2D data structures that supports associative lookup on ordered keys. In … Continue reading Full Release Notes for F# 1.9.2.7

Using F# active patterns with LINQ expression trees

Luis Diego Fallas has written a nice blog entry on using F# active patterns to ease the process of working with LINQ expression trees. This kind of "meta-programming" application is absolutely one of the key reasons why Greg Neverov, James Margetson and myself added the feature to F#. I'm very glad to see Luis putting the pieces together and explaining what's … Continue reading Using F# active patterns with LINQ expression trees

More on the overloaded conversion operators in 1.9.1.9

F# 1.9.1.9 includes an addition that can substantially simplify F# numeric code. This provides a solution for a problem that has been present in F# programming from the start, but is not present in many other languages. In particular, the functions int, float, float32 etc. are now defined as overloaded conversion operators. For example, you can replace … Continue reading More on the overloaded conversion operators in 1.9.1.9

F# 1.9.1.9 available (currently MSI only): Includes overloaded numeric conversion functions and checked arithmetic

Hi all, I'm glad to announce the availability of F# 1.9.1.9. It's available for download from this link: http://research.microsoft.com/research/downloads/details/c8d270ce-dc93-4b82-8125-2c57036520b3/details.aspx This is in general a bug fix release over 1.9.1.8, with some exceptions We've added two great new features: Overloaded numeric conversion functions. The functions int, float, float32 etc. now overloaded conversion operators. For example, you can … Continue reading F# 1.9.1.9 available (currently MSI only): Includes overloaded numeric conversion functions and checked arithmetic

Some F# Links: SPiM, F# News, FFT, Multi-core

Andrew Phillips' Stochastic Pi Simulator (SPiM) is implemented in F# (and also OCaml) and has been gaining some attention of late. There is a nice article called Making Computer Systems Reveal Biological Secrets on the MSR website and F# gets a mention at the end. On that topic, Jon Harrop has some new articles on his F# News … Continue reading Some F# Links: SPiM, F# News, FFT, Multi-core

HDFS – Hardware Design Using F#, version 0.2

  On hubFS AndyMan has recently announced "Hardware Design F#", HDFS, Version 0.2, based on a port of HDCaml, by Tom Hawkins, though rapidly acquiring a life of its own.  I blogged about version 0.1 a while back. Here are his release highlights:   The project has moved home. Now at  http://code.google.com/p/hdfs/ and  http://groups.google.com/group/hdfsharp Revised circuit design API.  Where … Continue reading HDFS – Hardware Design Using F#, version 0.2

Detailed Release notes for 1.9.1.8

Detailed Release Notes for release 1.9.18 of the F# Compiler and Tools.   http://research.microsoft.com/research/downloads/details/b46c7032-149c-4da3-a027-7768210a158d/details.aspx [ Note: we've had one report of an installation issue on Windows XP, and one on Windows Vista. If you have a problem try installing the VC runtime libraries http://www.microsoft.com/downloads/details.aspx?FamilyID=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=enPlease let us know if you have problems, by emailing us at "fsbugs at microsoft … Continue reading Detailed Release notes for 1.9.1.8

F# 1.9.1.8 Released!

[ Note: An update to this release has been announced: see version 1.9.1.9 at http://blogs.msdn.com/dsyme/archive/2007/05/06/f-1-9-1-9-available-currently-msi-only-includes-overloaded-numeric-conversion-functions-and-checked-arithmetic.aspx %5D I am very pleased to announce that F# 1.9.1 is now available for download. This is a major release for us, a first step toward F# 2.0, and incorporating two exiciting new features: Active Patterns and Implicit Class Construction. The … Continue reading F# 1.9.1.8 Released!

New drafts of chapters from “Expert F#”

I'm very glad to announce the availability of drafts of Chapters 2-7 of Expert F#, of a book on F# which I'm currently in the process of co-authoring (thanks to James Huddleston at Apress for permission to post these).  This is one of two F# books planned for publication by Apress in 2007, the other being Foundations … Continue reading New drafts of chapters from “Expert F#”

Writing XBox 360 games with F# and XNA Game Studio Express (courtesy of Jack Palevich)

Whoa! F# for games on the XBox 360!?  Microsoft XNA Game Studio Express got launched today, and is available free to anyone with a Windows XP-based machine at http://www.msdn.com/XNA. This is based on Visual C# 2005 Express Edition and the Microsoft.NET Compact Framework. Jack Palevich on the XBox team has written three tutorials on How to Write … Continue reading Writing XBox 360 games with F# and XNA Game Studio Express (courtesy of Jack Palevich)

F# helps show we’re not Neanderthals

Well, sort of :-) One of our most recent scientific users of F# is Darren Platt, head of computational genomics at the DOE Joint Genome Institute (they sequence something like 20% of the world’s DNA - here are the stats). Darren is a co-author of the recent stunning paper on Neanderthal DNA (see screen shots below), where they sequenced DNA extracted … Continue reading F# helps show we’re not Neanderthals

F# 1.1.13 detailed release notes

  I’m pleased to announce that F# 1.1.13 has been released. The original release announcement is here. You can download this release from http://research.microsoft.com/fsharp/release.aspx . A summary of the changes in this release is given below (in some cases these updating the changes in the README-fsharp.html from the distribution)   Enjoy!   Don and James … Continue reading F# 1.1.13 detailed release notes

F# 1.1.13 now available!

  I’m pleased to announce that F# 1.1.13 is now available! You can download this release from http://research.microsoft.com/fsharp/release.aspx .    This is an exciting release, containing many important enhancements to the language that make F# programming simpler, more powerful and easier to explain and understand.  We’re particularly pleased with comprehensions, which, although found in other languages, … Continue reading F# 1.1.13 now available!

Three machine learning experts, F# Interactive, IEnumerable, a Terabyte of data and XBox Live…

  Ralf, Phil and Thore in the MSR Cambridge Applied Games Group have been continuing their work using F# in conjunction with the XBox Live team.  Ralf amazes me with the ease with which he switches between sophisticated probabilistic modelling to writing stored procedures in C#, then back to F# Interactive to crank out another great … Continue reading Three machine learning experts, F# Interactive, IEnumerable, a Terabyte of data and XBox Live…

F# for Scientists announced by Jon Harrop

I'm very excited to see that Jon Harrop has announced his intention to produce F# for Scientists. Jon is a PhD in Computational Chemistry from the University of Cambridge, and also the author of the absolutely must-have book Ocaml for Scientists.  One review of this fantastic book said: What do you take with you when police are banging … Continue reading F# for Scientists announced by Jon Harrop

F# on Channel 9

Recently I had the pleasure of talking with Mike Hall and a DV Camera for an hour, the end result being two F# videos/interviews recently posted on Channel 9. There are two parts:                   Interview by Mike Hall                 The F# WebCrawler and DirectX demos   Thanks to Damien Watkins for arranging this :-)  

Draft Chapter 2 of “Expert F#”: Essential Language Features

  [ Note: this post is now out-of-date: drafts of Chapters 2-7 are now available ]    I'm very glad to announce the availability of an early draft of Chapter 2 of a book on F# which I'm currently in the process of co-authoring.  The projected title of the book is, unabashedly, "Expert F#". This is one of two F# books planned … Continue reading Draft Chapter 2 of “Expert F#”: Essential Language Features

Detailed release notes for 1.1.12.3

Detailed release notes for 1.1.12.3   Collected changes between v1.1.11.12 and 1.1.12.3 Lightweight syntax option. Are you sick of writing in? The #light option makes the use of certain keywords such as in optional by using indentation. See the informal language specification for details, as well as the ConcurrentLife sample and the Samples101 tutorial. Enable … Continue reading Detailed release notes for 1.1.12.3

Lightweight syntax option in F# 1.1.12.3

We're glad to announce that F# 1.1.12.3 supports the optional use of lightweight syntax through the use of whitespace to make indentation significant.  At the time of this release this is an experimental feature, though it is assumed that its use will become widespread. The F# indentation-aware syntax option is a conservative extension of the … Continue reading Lightweight syntax option in F# 1.1.12.3

F# 1.1.12 now released!

We're very pleased to announce that F# 1.1.12 is available for download. (note: since the time of writing this has been updated to F# 1.1.12.5) This release incorporates a significant number of minor improvements combined with two new features: a lightweight syntax option and a feature called Active Patterns.   Both are considered "beta" features: minor changes … Continue reading F# 1.1.12 now released!

An upcoming experimental feature: Active Patterns in F#

Greg Neverov (inventor of the C# dialect Metaphor and an intern at MSR Cambridge this summer) has been working on an experimental new language feature called "active patterns".  This topic has come up on The Hub, so I thought I would mention a bit about it here, though I will only be able to give a brief taste … Continue reading An upcoming experimental feature: Active Patterns in F#

Internships at MSR Cambridge (now All-Year-Around)

Are you interested in working for three months at Microsoft Research, Cambridge, on a project related to F#?  MSR Cambridge now takes interns year-round, not just in the summer months. We are keen to attract motivated and well-qualified folk to work with us on our research, and on improving or developing F# and its related tools … Continue reading Internships at MSR Cambridge (now All-Year-Around)

On The Hub: F# and ASP.NET 2.0 (CodeDom provider)

The Microsoft MVP Tomas Petricek has been continuing his exploration of F# LINQ-style quotations to implement a first cut at an F# CodeDom provider, with a view to building entire web applications in F# alone.  He's posted a blog entry on The Hub (n.b. you currently have to register with The Hub for this entry): I was recently … Continue reading On The Hub: F# and ASP.NET 2.0 (CodeDom provider)

F# for Fun: Podcasting in F#

Dominic has trumped me again - while I'm busy writing media-savvy samples like "1+1 = 2" he goes and writes a podcasting client in F#.   Other gems on his wonderfully eclectic blog are the unlikely combination of the world's shortest escalator and a  Writing a pi-calculus compiler in F# (Parts I - VII). Enjoy! 

Detailed Release Notes for F# 1.1.11.7

  The full change list for F# 1.1.11.6 is below. Here's the list of fixes we've made between F# 1.1.11.6 and F# 1.1.11.7:    --   Permit the use of lambdas taking multiple tupled arguments within quotations.    --   Fix integer formats 0b101001 and 0o101030 in fsi.exe (thanks to Robert Pickering for this one)    --   Fix inlining of composition operator    … Continue reading Detailed Release Notes for F# 1.1.11.7

.NET Developer Journal: Grid Computing with F#

Chad Albrecht has written an article for the recent edition of .NET Developers Journal called F# on a Virtual Super Computer.  It uses the excellent Alchemi grid computing framework from my the University of Melbourne (a wonderful institution from my home country that also brought us Mercury, whose design and implementation of existential types strongly influenced my decision … Continue reading .NET Developer Journal: Grid Computing with F#

Introducing http://cs.hubfs.net: a great new F# community initiative takes shape

I’m very glad to announce a new F# community initiative called “The Hub”, hosted at http://cs.hubfs.net, and known as “hubFS”.   Broadly speaking, this site aims to be “THE place for F# on the web”.  I think this is great – we need a broad reach on the web, and all the signs are that this site … Continue reading Introducing http://cs.hubfs.net: a great new F# community initiative takes shape

F# for games and machine learning: .NET + performance + scripting

Ralf Herbrich is a co-leader of MSR Cambridge's Applied Games Group, which specializes in using machine learning techniques such as TrueSkill to improve the player experience of XBox Live and other applications.  He's now also an F# user and advocate, having recently succesfully used F# to rapidly perform new, experimental analysis of masses of new … Continue reading F# for games and machine learning: .NET + performance + scripting

F# First Class Events: Simplicity and Compositionality in Imperative Reactive Programming

The text of this post is also available as an article, which I'll modify with latest material on this topic as time goes on. As of version 1.1.10, F# now supports first-class, composable events. Here 'events' is used in the same sense as in the C# language, but you'll notice some important differences in how events … Continue reading F# First Class Events: Simplicity and Compositionality in Imperative Reactive Programming

Simplicity and Compositionality in Asynchronous Programming through First Class Events (Article Version)

Updates to this article from the original blog version based on reader comments are marked in purple! As of version 1.1.10, F# now supports first-class, composable events. Here 'events' is used in the same sense as in the C# langauge, but you'll notice some important differences in how events appear in the language design and in practical … Continue reading Simplicity and Compositionality in Asynchronous Programming through First Class Events (Article Version)