F# – Referential equality for tuples, discriminated unions and records

By default, tuples, discriminated unions and records have what is known as structural equality – i.e. if two instances of these types have the same set of values then they are considered equal, just like value types – despite being reference types:



Discriminated Unions




To facilitate this form of equality, the F# compiler automatically overrides Object.Equals and Object.GetHashCode methods for you. However, there may be times when you want to use referential equality with these types, in which case you just need to add the ReferenceEquality attribute to your type:


1 Comment

  1. Pingback: Contrasting F# and Elm’s record types | theburningmonk.com

Leave a Reply

Your email address will not be published.