Functional Programming

My Talks in London: The F# User Group & At Progressive.NET

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. The talk was entitled “Using Language Oriented Programming to Execute Computations on the GPU” and thanks to the efficiency of the good folks at Skills Matter the talk is already available on line. The event was very well attended, with around 50 people turning up. The talk covers more the Language Oriented Programming aspects than the knitty gritty details for detailing with the GPU and the audience seemed to enjoy it. It was...

Strings and F# Immutable Lists

In .NET strings are immutable. I think most .NET programmers agree that this is a good thing, as it generally makes code that works with strings safer and more predictable. However, operations that involve large amounts of string manipulation perform poorly because each time a string concatenation occurs then both strings must be copied. His often leads people to believe that all immutable objects will perform poorly. 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...

Beginning F# Workshop and Progressive.Net

I’ll in London on the 10th/11th May giving a two day course entitle “Beginning F# Workshop” in conjunction with the lovely folks at Skills Matter. I think I give a fairly good description of the course on the workshop webpage, so I wanted to use this blog post to talk about why you would want to attend. I believe, as I stated in my book, that functional programming will be the next big wave in programming, and that F# will be one of the languages at the forefront of this functional programming renaissance. I don’t believe this will be sole...

Functional Programming eXchange: The Videos

I’ve recently noticed that talks from Functional Programming eXchange, that I organized and spoke at, are now online. This is a great resource for people looking for some more advanced material on Functional Programming. So here are the videos:   SADEK DROBI: Computation Abstraction http://skillsmatter.com/podcast/cloud-grid/computation-abstraction   MATTHEW SACKMAN: Supercharged Rabbit: Resource Management at High Speed in Erlang http://skillsmatter.com/podcast/cloud-grid/supercharged-rabbit-resource-management-at-high-speed-in-erlang   ANTON SCHWAIGHOFER: F# and Units-of-measure for Technical Computing http://skillsmatter.com/podcast/cloud-grid/f-and-units-of-measure-for-technical-computing   GANESH SITTAMPALAM: Functional Programming for Quantitative Modeling at Credit Suisse http://skillsmatter.com/podcast/cloud-grid/functional-programming-for-quantitative-modelling-at-credit-suisse   DUNCAN COUTTS: Strong Types and Pure Functions http://skillsmatter.com/podcast/cloud-grid/strong-types-and-pure-functions   ROBERT PICKERING: Combinators, DSLs, HTML and F# http://skillsmatter.com/podcast/design-architecture/using-combinators-to-tackle-the-html-rendering-problem

Speaking Engagements in Paris in October/November 2009

UPDATE:The talk tonight (29 Oct) at Zenika has been postoned till November due to unforeseen circumstances. I'll let you know the exact date as soon as it is confirmed. My apologies for this. I’ll be doing a talk about functional programming in F# at Zenika, this Thursday, 29th October at 19h, as part of their community program. The talk will cover what functional programming is and how a language like F# is adapted to functional programming. I’ll also be doing a talk at Epita with Laurent Le Brun on 12th November for the students at this college.

Functional Programming eXchange - 7th December 2009

I’m very happy to announce the “Functional Programming eXchange” which will take place in London at Skills Mater head quarters on the 7th December. I’ve been involved in organizing a program which will cover F#, Erlang, Scala and Haskell. The program has been designed to interested both people actively involved in functional programming in industry and working programmers with an interest in functional programming would like to learn more about how they can use these two techniques in their day job. The program will include, me, as well as: Duncan Coutts of Well-Typed Ganesh Sittampalam of Credit Suisse Anton Schwaighofer of MSR Sadek Drobi...

Feature Speaking Engagement – F# Tutorial at the Progressive .NET Tutorials, May 11-13th, London

I will be giving a half day F# tutorial at the “Progressive .NET Tutorials” organised by Skills Matter. This will be an excellent 3 daylong event with 2 tracks featuring half day and full day Tutorials by Gojko Adzic, David Laribee, Hammet, Ian Cooper, Mike Hadlow, Scott Belware and Sebastien Lambla. My will be giving a half day tutorial on Wednesday May 13th (the last day of the event). I will be presenting 'F# Tutorial ', which will aim to give delegates the building blocks for using F# productively and to start having fun with it. For the full programme...

JAOO.dk and ALT.NET UK Summer Conference

I’m very pleased to announce that I’ve been invited to speak at the JAOO conference in Aarhus, Denmark, 28th September till 3rd October. I’ll speak on 1st October and I’ll actually be at the conference 29th September till 1st October attending sessions. The title of my presentation is “Learning F# and the Functional Point of View” and you can see the full abstract here. I’m very pleased to have been invited to speak at conference were the other speakers include Martin Fowler, Anders Hejlsberg, and Erik Meijer, and I’m really looking forward to it. Feel free to drop me a...

Immutability and Concurrency – Part I – Getting to Know Immutable Data Structures

When asking the question how does functional programming help me with concurrent programming? The standard response tends to be functional programming use immutable data structures, read-only data structures can be shared between threads without issues, end of problem. Except it isn’t. Immutable data structures have a different set of problems associated with them when working on concurrent problems. This post will examine what these problems are, and then show that this is just a special case of a more general set of problems when working with immutable data structures. Finally will start taking a look at how we solve some...

Foundations of F# - Announcement

I know I've been very quite here lately. The reason for this is I've spend a lot of time working on _the book_. Anyway, all thats nearly over now, so hopefully I can get back to being a bit more chatty. Anyway, here is the announcement that I've made just a few moments ago on the hubfs.net that says its almost finished printing: http://cs.hubfs.net/blogs/roberts_strange_f_blog/archive/2007/05/20/3153.aspx

Forwards is the new backwards with the |> operator

Recently Don Syme made a post to the F# mailing list about some proposed changes to the F# libraries. In it talked about the virtues of using the new |> operator, sighting the following example as something it would be difficult without it:   let methods = System.AppDomain.CurrentDomain.GetAssemblies()             |> List.of_array |> List.map ( fun assm -> assm.GetTypes() ) |> Array.concat             |> List.of_array |> List.map ( fun t -> t.GetMethods() ) |> Array.concat   After squinting at it for a while I realised that I didn’t really understand what the sample was doing, let alone see the advantage...

Rico Mariani’s performance quiz 8 – Part 2 – The Great Parsers Shoot Out

Rico made some more interesting posts in his parser performance quiz, first producing a parser where the predicates are compiled into an in memory representation and also a parser where he produces IL on the fly. He talks about them here and here respectively.   So I ported both of these parsers to F#; as they demonstrate some nice uses of patterns commonly used in ML, such as take one data structure that is easy to read and transforming it into another than is easy to evaluate. This gives us 6 parsers in total, so...

A little too lazy

Last night I too another look at my parser and unfortunately discovered some quite serious flaws in the algorithm, it was just too lazy and almost always terminated before it should. To fix these I basically ended up starting from scratch, I’ve reloaded the results. I’ll be tidying it up and talking about what went wrong as part of a wider comparison of all 3 parsers.

Rico Mariani’s performance quiz 8 - Parsers

The snow is falling over Saint Germain en Laye and it makes everything look really pretty, but I have absolutely no whish to go outside, so I sit in the flat and what it fall and write this blog entry instead.   I’ve been following Rico Mariani’s performance quizzes for a while now and always found them interesting. The latest quiz on the performance of a parse, reminded me of a famous CS quote that every large software project has badly implement lisp engine in it. However I know little about lisp so I thought...

F# docs

As noted here and here I have created some documents for F# using NDoc and the xml files that are available on with the F# download. There still in "beta" phase as I'll be making refinements such as search engine optimisations, as well as a build in search, but you may already find them useful. Enjoy!

C# 3.0 – The var “keyword” and anonymous classes

This is an explanation of why the var “keyword” is like it is, and how this effects anonymous classes. I should probably point out I’m nothing to do with the C# design team, so these are merely my own opinions.   The var is all about type inference, it’s important to remember this is still static typing. The var keyword informs the compiler that it should try and infer the type of variable; if it can not do this a compile error is generated. One very important aspect of the var keyword is that it...

Arg Parsing – The Chris Sells Challenge

A couple of days ago Chris Sells made this post about the way best to parse command line augments. Given an xml document describing the structure of a command line augment, he wants to know would it be best to use code gen or an interpreter to parse command line arguments. Here is the xml structure he was talking about.   <args description="Two wrongs don't make a right, but three lefts do">  <arg name="lefts" description="Number of left turns" type="int" default=4" />  <arg name="attitude" description="Driver attitude" required="true" type="string" /></args>   F# (and the ML languages in general) offers a...

Functional Programming in C# 2.0 - Bidirectional Folding

Last time we took a look at folding. It may not have escaped the readers notice that some operations are dependent on the order the parameters are processed. For instance in the string concatenation example the order the parameters are processed affects the order they appear in the output string. But in this example to reverse the order of result does not actually require access to the list in both directions, it is only necessary to reverse the order that the parameters are concatenated in:   // intList = {1, 2, 3, 4, 5, 6} string...

Functional Programming in C# 2.0 - Folding

Late there has been quite a lot of talk about functional programming in C#. Efforts by Don Box, have been note and used on this blog several times and now that and now Sriram Krishnan has produced this nice piece on currying in C# 2.0.   One area that seams to have been over looked so far is folding. A folding function is similar to a mapping function and mapping functions are supported by the framework library in version 2.0, expect it calls it ConvertAll. For example, the framework defines the following method on the...

Extensible programming languages

I came across this article via Slashdot, which seems to be an abridge of an article that I’d already seen via lambda the ultimate.   The idea of extensible programming languages is interesting one but not a particularly a new one and nor do I think xml is the right tool for solving these problems.   XML as a programming language   XML is a good way of representing data, especially if the data needs to be passed between systems or serialised for storage. This is because there are well established API for processing xml so you don’t...

Nemerle

A functional programing language being created with the mono framework. Interesting stuff: http://www.nemerle.org/

 Subscribe in a reader

Links

CVMy CV
stackoverflowMy Stack Overflow CV
Twitter Follow me on Twitter
FaceBook View my Facebook
LinkedIn View my LinkedIn Profile
Viadeo Viadeo Profile (Fran�ais)

Conferences/Workshops

Robert Pickering:Robert Pickering's Beginning F# Workshop,  Robert Pickering's Beginning F# Workshop
2 DAY COURSE. Featuring Robert Pickering
London, Monday, May 10th
Progressive .NET Tutorials, Progressive .NET Tutorials
CONFERENCE (3 DAYS)
London, Wednesday, May 12th BOOK NOW!

Badges


Progressive .NET Tutorials 2009

Disclaimer

The views expressed on this weblog are mine and do not necessarily reflect the views of my employer.

All postings are provided "AS IS" with no warranties, and confer no rights.

www.flickr.com
This is a Flickr badge showing public photos and videos from Robert Pickering. Make your own badge here.