Category Archives: Functional

Don’t Misuse Lambdas

Avoid Duplicating Code It’s great that so many C# and VB.NET developers are taking advantage of LINQ. Unfortunately, using LINQ can encourage you to misuse lambdas. Consider the following simple example: Square is a useful utility function. It shouldn’t be defined as a lambda because that ensures code duplication instead of reuse. It’s more obvious […]

Also posted in C#, F# | 17 Responses

Designing F# Functions for Currying and the |> Operator

Last week, I led a jam about F# at the Ann Arbor Study Group. One of my SRT Solutions coworkers, Ben Barefield, asked a question that warrants further discussion. After I introduced the forward pipe (|>) operator, Ben asked the following: In F# programming, do you design functions so the last argument is one that […]

Also posted in Currying, F# | Leave a comment

Option Types vs Nullable Types

Some of the feedback that we’ve received about Elevate has to do with Option types and how they are different or similar to Nullable types in C#. Luke Hoban does a great job of describing some of the differences here: http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=470052 If you’ve played around with Option types in F# or another functional language, you […]

Also posted in C#, Elevate, F# | 4 Responses

Introducing Elevate

The past few weeks, a few other SRT Solutions developers and I have been working on a new open source library called Elevate. We went public with the source on CodePlex this weekend, and although we’re still in the early stages of development, I already rely on many of the functional programming features of the […]

Also posted in C#, Elevate, F#, SrtInsights | 56 Responses

F# For C# Programmers: Programming In the Small

During CodeMash this past January, I had the opportunity to talk with Chris Smith about F#. One of the things that he considered to be a sweet spot for the language was programming “in the small”. At the time, I didn’t completely agree with his claim, but after writing more F# and functional C# code, […]

Also posted in C#, F# | Leave a comment

The Code Behind Paint Wars: Merging Functional and OOP

This post is the fourth in a series of posts about the code behindPaintWars. In this series, I will be talking about how the design and implementation of the game differed in C# and F#.  Along the way, I’ll also be talking about some of the fun and exciting features of the F# language and […]

Also posted in F#, Paint Wars, SrtInsights | Leave a comment

Beyond LINQ: Sequence Generation in C#

I’m taking a post off from the Paint Wars posts, but I think this one is worth it. Many languages have nice syntactic sugar for creating a sequence of numbers. Usually, the syntax says something like: The expression "1..5" expands to the list "1, 2, 3, 4, 5". This syntax lets you do fun things […]

Also posted in Beyond LINQ, C# | 5 Responses

The Code Behind Paint Wars: Functional Design

This post is the third in a series of posts about the code behind PaintWars. In this series, I will be talking about how the design and implementation of the game differed in C# and F#.  Along the way, I’ll also be talking about some of the fun and exciting features of the F# language […]

Also posted in F#, Paint Wars, SrtInsights | Leave a comment

Spice Up Your C# Code With Currying

[UPDATE: When I first posted this, I used the term currying  to describe partial function application. Though they are related concepts, they mean different things. Since this post is more about partial function application than currying, I have corrected the terminology below.] C# doesn’t have language supp1ort for currying, but that doesn’t mean that you […]

Also posted in C# | Leave a comment