Welcome to MSDN Blogs Sign in | Join | Help

jaredpar's WebLog

Code, rants and ramblings of a programmer.

Syndication

News

Now Reading

Expert F#

What's a better book to read when learning F#?

Essential WPF

Thus far the best book I've read on WPF. Gets right down to working with WPF and the goals/history.

Purely Functional Data Structures

Reading this book makes me feel like I'm back in college. It will really get your mind going and is best read with a whiteboard handy.

Blog Roll

Eric Lippert
Dustin Campbell
Jon Skeet
Coding Horror
Brian McNamara
Hub FS
Full List

Browse by Tags

All Tags » Patterns   (RSS)
If you implement IEquatable<T> you still must override Object’s Equals and GetHashCode
CLR 2.0 introduced IEquatable<T> which is an interface that allows for type safe equality comparisons.  Previously, the best available method for comparing equality was the virtual Object Equals method.  The method is loosely typed since Read More...

Posted Thursday, January 15, 2009 8:00 AM by Jared Parsons | 0 Comments

Filed under: ,

Comparing Continuations in F# and C#
Lately I’ve been playing quite a bit with F#.  I have several hobby projects I’m working on that take up a bit of my time.  But when I’m not playing around with F# I’m exploring ways to apply certain functional patterns to actual coding on the Read More...

Posted Monday, November 10, 2008 8:00 AM by Jared Parsons | 4 Comments

Filed under: , ,

Custom Exceptions: When should you create them?
I think the best answer is: rarely.   It's really hard to go straight to a justification here though.  I find that answering a different question will eventually shed led on when to create a new exception. "What are the benefits of Read More...

Posted Monday, October 20, 2008 8:00 AM by Jared Parsons | 5 Comments

If it's not broken, maybe you should fix it anyway
I know this is goes against conventional wisdom but it's something I believe in.  Every sufficiently large project has that section of code nobody wants to go near.  The mere mention of it causes people to leave the room.  It usually has Read More...

Posted Monday, October 13, 2008 8:00 AM by Jared Parsons | 2 Comments

Filed under: ,

Unfold
F# has a handy method called Unfold.  Think of it as the logical opposite of an Aggregate function.  Aggregates take a sequence of elements and convert them to a single element.  An unfold method will take a single element and turn it into Read More...

Posted Tuesday, October 07, 2008 8:00 AM by Jared Parsons | 3 Comments

Filed under: , , ,

Functional C#: Providing an Option
Sorry for the terrible pun in the title.  I wanted to blog about developing an F# style Option class for C# and I couldn't resist. The basics of an Option class are very straight forward.  It's a class that either has a value or doesn't.  Read More...

Posted Monday, October 06, 2008 8:00 AM by Jared Parsons | 5 Comments

Filed under: , , ,

RantPack Update 2.0.0.2
Version 2.0.0.2 released. Summary: RantPack is a utility library I maintain and actively use. The main themes of this library are functional programming, patterns, immutable/pressitent collections, future and other threading primitives. I've placed the Read More...

Posted Wednesday, July 23, 2008 8:00 AM by Jared Parsons | 1 Comments

Filed under: ,

Yet another rule for Equality
"If you implement equality in a child class, including operators, you must implement the equality operators in the base class." Unfortunately this is another case of learn the hard way but makes sense when you think about it. The below code snippet is Read More...

Posted Friday, July 11, 2008 8:00 AM by Jared Parsons | 6 Comments

Filed under: ,

Enums vs. Adapters
I like Enums and use them frequently for options and behavior.  To an extent I use Enum's to control behavior.  For example enum Kind { Kind1, Kind2, Kind3 } class Example { private Kind m_kind; public int SomeAction() { switch (m_kind1) { case Read More...

Posted Wednesday, June 18, 2008 8:00 AM by Jared Parsons | 9 Comments

Filed under: ,

Making Equality easier
Recently I've done a bit of posting about the difficulties of properly implementing equality in VB (and DotNet in general). While most of the problems can be fixed with a standard snippet the one really hard to implement issue is GetHashCode(). The rules Read More...

Posted Tuesday, June 03, 2008 8:00 AM by Jared Parsons | 2 Comments

Filed under: ,

RantPack Update
I released a new version of RantPack today.  Mostly this is a bug fix release with a couple of minor new features. https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=RantPack&ReleaseId=1119 Features Added a way to shim Immutable Read More...

Posted Monday, June 02, 2008 8:26 PM by Jared Parsons | 0 Comments

Filed under: ,

do {} while(0) what?
A recent check in of mine raised a few eye brows during reviews. I checked in a few macros which ended with/contained a "do{}while(0)" and people were curious as to why. In my experience there are two main uses for it. Insert an empty statement with no Read More...

Posted Wednesday, May 21, 2008 8:00 AM by Jared Parsons | 3 Comments

Filed under: ,

Switching on Types
One action I find frustrating in C# is where a particular action needs to be taken based off of the type of a particular object. Ideally I would like to solve this with a switch statement but switch statements only support constant expressions in C# so Read More...

Posted Friday, May 16, 2008 8:00 AM by Jared Parsons | 9 Comments

IEquatable(Of T) and GetHashCode()
This is a bit of a follow up to a previous post we discussed how to properly implement equality in VB. Several users commented/asked that IEquatable(Of T) could be used in place of overriding Equals(). Since IEquatable(Of T) doesn't define a GetHashCode() Read More...

Posted Friday, May 09, 2008 8:00 AM by Jared Parsons | 0 Comments

Filed under: ,

Properly Implementing Equality in VB
Many developers want to implement equality functions for their objects.  DotNet made equality a deep part of the framework and added support all the way up to System.Object with Equals and GetHashCode .   In addition to the strongly enforced Read More...

Posted Monday, April 28, 2008 8:04 AM by Jared Parsons | 6 Comments

Filed under: ,

More Posts Next page »
Page view tracker