Last month, I posted my Functional C# presentation for the Rockville .NET User Group (RockNUG). Yesterday, I was able to finally present the material, although I was feeling under the weather and there was a lot of information in just that brief amount of time. So, I’m going to repost the materials just in case someone missed them. I’m adding a few things as well which may be of interest. I’m hoping to expand this for upcoming code camps.
Here are some resources that will be helpful in covering functional programming aspects:
Functional Programming
- Why Functional Programming Matters – John Hughes
- Why Haskell Matters
- Tutorial Papers in Functional Programming
- F# Home Page
C# Futures
Functional Programming Aspects with C#
- Functional C# Revisited – Into the Great Void
- Functional C# – Unfolding Lists
- Functional C# – Learn from F# and LINQ
- Recursing into Recursion – Continuation Passing Style (CPS)
- Recursing into List Processing
- Recursing into Linear, Tail and Binary Recursion
- Define Recursion – See Recursion
Books
Podcasts
- .NET Rocks Episode 310 – Simon Peyton Jones on Functional Programming and Haskell
- .NET Rocks Episode 270 – Erik Meijer on LINQ
- Software Engineering Radio Episode 97 – Anders Hejlsberg
Video Presentations
I’ve continued to add to my Functional C# project as time goes along. This is intended to be a library of functional programming techniques in C# 3.0 and some demonstrations of moving from imperative style programming to a more functional programming style. This is an ongoing project and more will be added in time, and I may end up just putting them up not as samples, but as a library. But in the mean time, there are a lot of interesting topics that are being covered.
Some of the topics covered in these code projects are:
- Closures
- Continuation Passing Style
- Currying
- Filter High Order Function
- Fold High Order Function
- Iterators
- Lazy Evaluation
- LINQ
- Lists (Immutable and Recursive)
- List Comprehensions
- Map High Order Function
- Memoization
- Monads
- Operators (Forward, Reverse, etc)
- Recursion
- Unfolding and Generators
My slide deck can be found here and my code snippets once again can be found here.
As I discussed last night, the DC ALT.NET meeting is on August 28 from 7-9PM with Jeff Schoolcraft on Approaching Ruby. Details can be found on my previous post. Hope to see a great crowd, and don’t forget to RSVP!