Browse by Tags

Tagged Content List
  • Blog Post: F# Object Oriented Programming

    Jomo Fisher—F# has a functional heritage but it is actually very good at OO as well.  Here’s an example of its nice, clean syntax for declaring a class: Code Snippet type Vector(x : float, y : float) =      member this.X = x      member this.Y = y Tim Ng posted a nice comparison of F# to C# for...
  • Blog Post: Strange Confluence: An Immutable Queue in F#

    Jomo Fisher--Reading one of my favorite blogs this morning--Eric Lippert's Fabulous Adventures in Coding--I came across his article on implementing an immutable queue in C#. The funny thing is that just yesterday I wrote exactly the same structure in F#. Here it is for your reading pleasure: type...
  • Blog Post: The Least a C# Programmer Needs to Know about F# Part I--Implicit Types

    Jomo Fisher--A few weeks ago, a fellow C# programmer asked me what the biggest differences between programming in C# and programming in F# are. Since then, I've been building a list of differences. My plan was to write a single article that discussed everything. This morning the list got too long to...
  • Blog Post: Adventures in F#--Corecursion

    Jomo Fisher--In a prior post I touched on recursion in F#. One of the comments was about mutually recursive functions. The example given was, let f1 a do print a f2 a let f2 a do print a f1 a f1 1 It turns out that this F# doesn't compile because F# scoping rules are different than what you might expect...
  • Blog Post: Adventures in F#--Tail Recursion in Three Languages

    Jomo Fisher—Here’s the F# I'm looking at today: #light let rec f n = do printf "%d\n" n f (n+1) f 1 This defines a recursive function 'f' that takes a value 'n' as a parameter. This function prints the value of n to the console and then calls itself with n+1. So we've defined a function that will count...
  • Blog Post: Probing a Hidden .NET Runtime Performance Enhancement

    Jomo Fisher--Matt Warren once told me that the runtime had a performance optimization involving calling methods through an interface. If you only had a small number of implementations of a particular interface method the runtime could optimize the overhead of those calls. Coming from the C++ world where...
  • Blog Post: LINQ to SQL Beta2 Performance Numbers and the Dynamic Compilation Pattern

    Jomo Fisher--Rico Mariani has been posting about LINQ to SQL perfomance and has finally posted the performance numbers for Beta2: http://blogs.msdn.com/ricom/archive/2007/07/05/dlinq-linq-to-sql-performance-part-4.aspx One of the tricks Rico and Matt Warren used to get this stellar performance was...
  • Blog Post: Dealing with Linq’s Immutable Expression Trees

    Jomo Fisher --I recently got a question via my blog that dovetailed nicely with something I’ve been working on: I know that expression trees are (or at least appear to be) immutable - which requires that you rewrite the entire tree if you want a tree that is similar, but not the same as, an existing...
  • Blog Post: Leaky Functions\Barrel of Bugs

    Jomo Fisher--Pop quiz. Consider this function call in C#: a = MyFunction(b); What information is exchanged between the caller and the function? When is the information exchange done? It would be nice if the answer was: MyFunction takes value b and returns value a. When the function finishes no more information...
  • Blog Post: Visitor Revisitted: LINQ, Function Composablity and Chain of Responsibility

    Jomo Fisher— Last time , I wrote about constructing an inline visitor using new C# language features. It worked fine for what it did, but it completely falls down when you want to extend existing visitors that you’ve created. What if I wanted to modify the PrintTree delegate to print negative numbers...
  • Blog Post: Inline Visitor Construction using LINQ

    Jomo Fisher—My current job is in the C# team working on LINQ to SQL. Because of nature of programming languages, very few days go by that I don’t deal with syntax trees and the visitor pattern. Occasionally, it would be convenient to create a quick one-off visitor for doing a manipulation on a tree....
  • Blog Post: Fast Switching with LINQ

    Jomo Fisher—I’ve run into a performance problem several times in my career that I’ve never found a truly satisfying answer for until now. The problem can be distilled down to this: Look up a value based on a string key. The set of strings is fixed and no unknown key values can occur. Consider my...
  • Blog Post: C# 3.0 Expression Trees

    IanG gives a brilliant explanation of C# 3.0 expression trees and how they enable efficient queries in DLinq: http://www.interact-sw.co.uk/iangblog/2005/09/30/expressiontrees This posting is provided "AS IS" with no warranties, and confers no rights.
  • Blog Post: Creating Custom Aggregate Functions in LINQ

    Jomo Fisher —Adriane asks whether it’s possible to create your own aggregate function like Sum, Avg, Count, etc. For object queries, the answer is yes. First, let’s look at the actual implementation of Sum: public static int Sum( this IEnumerable < int > source) { int sum = 0; foreach...
  • Blog Post: Evolution of a C# Query—Step by step from C# 1.1 to LINQ

    Jomo Fisher —The future of C# was recently unveiled at PDC. Object, XML and relational data will be integrated deeply into the language. This isn’t really a new direction for C#, it’s the next step down a path that C# has always been headed. To see this, let’s look at a simple task—filtering a set of...
  • Blog Post: Code Quality Tip #3: Switch Gears, Eat your Dogfood

    Jomo Fisher --Recently, the whole C# product unit took a week off from our regular work to do some App Building . We split up into teams and competed to see who could build the coolest application and find the most bugs in VS 2005. Given where we are in the schedule we’re trying hard to reveal remaining...
  • Blog Post: Hack the Build: Use the Whole Test-First Whale

    Jomo Fisher— Try lots of things to improve quality. Keep doing what works, stop doing what doesn’t. Writing code with Test-Driven-Development (TDD) takes about 30% longer than writing code without it. This was my experience on MSBuild. Still, as I noted here and here , I’m a fan of TDD. Code quality...
  • Blog Post: Hack the Build: Interview Question Musings

    I mentioned in an earlier post that I was moving to the C# team. Well, I’ve moved now and I’ve been spending some time interviewing developer candidates for positions in the C# product unit. A developer interview typically includes at least one coding problem. I’m also always on the lookout for new...
Page 1 of 1 (18 items)