Euler Project Problem 14 in F# - An exercise in optimization
Euler Project Problem 14 in F# - An exercise in optimization
One thing functional languages excel at is abstraction of control flow. Although you may not be familiar with the term, you’re probably already familiar with the concept. Programmers coming from an OO background are generally familiar with implementation polymorphism (overriding a method in a base class) and dependency injection (using an interface or base class to call methods an object, dynamically generated or otherwise); these are both forms of abstraction of control flow. They both allow the programmer to implicitly choose a different method to execute as long as that method conforms to some predefined signature. Let’s quickly remind ourselves what these too techniques look like.
Lately I’ve been working on integrating F# into the open source IDE SharpDevelop. I’m pleased to announce that this has been released as part of SharpDevelop 3.0 beta 1. See the screen shots below to get an idea of the look and feel:
Been a while since I posted anything, but I do have a few new ideas forming so keep watching! For now you can see me being interviewed in this Video filmed at TechEd Barcelona 2007 “Functional Programming Explained” (on the second page seems to be no way to do a direct link). I was very nervous before making the video and I think this show’s quite a bit at the beginning but I think I getting into my stride a bit more after a couple of questions. Having David McMahom as the interviewer really helped, he asked intelligent questions and was very laid back about the whole thing.
I probably should have posted this a bit earlier but here goes anyway: I will be presenting at Microsoft TechDays Paris, my talk will be co-presented with Don Syme and we'll be talking about parallelism and F#. Don will also be presenting an introduction to F#. Don's talk is at 14:30 and our joint talk is at 17:30.
Sign up for TechDays here:
http://www.microsoft.com/france/mstechdays/
In part three of this series we looked at how message queues could be used to receive updates from multiple threads and ensure that a data structure remain consistent. Now I would like to look at how messages queue can be used to spread work between different queues to allow it to the work to be performed in parallel. We will also look at an alternative mechanism of doing this using semaphores.
I have written an article for InfoQ explaining the Active Patterns, a new feature of F# that didn't make it into "Foundations of F#". Read it here.
There’s a new place in town for you to geek out over F#, as well as the http://cs.hubfs.net new there’s also a face book group: http://www.facebook.com/group.php?gid=5394519167&ref=nf (Requires a facebook profile but seems everyone has one these days). The group was created by Joel Pobar.
Why is the introduction of Erlang style message passing into F# interesting? Well you may have never heard of Erlang but if you’ve ever used a cell phone you’ve probably used an Erlang system. Erlang was originally built by Ericsson and released as open source in 1998, it was built to support the highly distributed and fault-tolerant systems required to support mobile phone networks. Many people consider Erlang to be the language that gets concurrency right.
Somasegar, the head of the Developer Division at Microsoft, has announced the productization of F#. Read more about it here.