Get an implementation of equality semantics using the given functions.
'T -> int
A function to generate a hash code from a value.
'T -> 'T -> bool
A function to test equality of two values.
IEqualityComparer<'T>
An object implementing IEqualityComparer using the given functions.
Create a dictionary which uses the given functions for equality and hashing:
open System.Collections.Generic
let modIdentity = HashIdentity.FromFunctions((fun i -> i%5), (fun i1 i2 -> i1%5 = i2%5))
let dict = new Dictionary<int,int>(HashIdentity.FromFunctions)
dict.[2] <- 6
dict.[7] <- 10
namespace System
namespace System.Collections
namespace System.Collections.Generic
val modIdentity: ((obj -> obj -> bool) -> IEqualityComparer<obj>)
module HashIdentity from Microsoft.FSharp.Collections
val FromFunctions: hasher: ('T -> int) -> equality: ('T -> 'T -> bool) -> IEqualityComparer<'T>
val i: 'a (requires member (%))
val i1: 'a (requires member (%) and equality and member (%))
val i2: 'a (requires member (%) and equality and member (%))
val dict: Dictionary<int,int>
Multiple items
type Dictionary<'TKey,'TValue> = interface ICollection<KeyValuePair<'TKey,'TValue>> interface IEnumerable<KeyValuePair<'TKey,'TValue>> interface IEnumerable interface IDictionary<'TKey,'TValue> interface IReadOnlyCollection<KeyValuePair<'TKey,'TValue>> interface IReadOnlyDictionary<'TKey,'TValue> interface ICollection interface IDictionary interface IDeserializationCallback interface ISerializable ...
--------------------
Dictionary() : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>) : Dictionary<'TKey,'TValue>
Dictionary(comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int) : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Multiple items
val int: value: 'T -> int (requires member op_Explicit)
--------------------
type int = int32
--------------------
type int<'Measure> = int
In this example, only one entry is added, as the keys2
and 7
have the same hash and are equal according to the provided functions.
Get an implementation of equality semantics using limited structural equality and structural hashing.
int
The limit on the number of hashing operations used.
IEqualityComparer<'T>
An object implementing IEqualityComparer.
Create a dictionary which uses limited structural equality and structural hashing on the key, allowing trees as efficient keys:
open System.Collections.Generic
type Tree = Tree of int * Tree list
let dict = new Dictionary<Tree,int>(HashIdentity.LimitedStructural 4)
let tree1 = Tree(0, [])
let tree2 = Tree(0, [tree1; tree1])
dict.Add(tree1, 6)
dict.Add(tree2, 7)
namespace System
namespace System.Collections
namespace System.Collections.Generic
Multiple items
union case Tree.Tree: int * Tree list -> Tree
--------------------
type Tree = | Tree of int * Tree list
type Tree = | Tree of int * Tree list
Multiple items
val int: value: 'T -> int (requires member op_Explicit)
--------------------
type int = int32
--------------------
type int<'Measure> = int
type 'T list = List<'T>
val dict: Dictionary<Tree,int>
Multiple items
type Dictionary<'TKey,'TValue> = interface ICollection<KeyValuePair<'TKey,'TValue>> interface IEnumerable<KeyValuePair<'TKey,'TValue>> interface IEnumerable interface IDictionary<'TKey,'TValue> interface IReadOnlyCollection<KeyValuePair<'TKey,'TValue>> interface IReadOnlyDictionary<'TKey,'TValue> interface ICollection interface IDictionary interface IDeserializationCallback interface ISerializable ...
--------------------
Dictionary() : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>) : Dictionary<'TKey,'TValue>
Dictionary(comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int) : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
module HashIdentity from Microsoft.FSharp.Collections
val LimitedStructural: limit: int -> IEqualityComparer<'T> (requires equality)
val tree1: Tree
val tree2: Tree
Dictionary.Add(key: Tree, value: int) : unit
Get an implementation of equality semantics using non-structural equality and non-structural hashing.
IEqualityComparer<^T>
An object implementing IEqualityComparer using NonStructuralComparison.op_Equality and NonStructuralComparison.hash.
Create a dictionary which uses non-structural equality and hashing on the key:
open System.Collections.Generic
let dict = new Dictionary<System.DateTime,int>(HashIdentity.NonStructural)
dict.Add(System.DateTime.Now, 1)
namespace System
namespace System.Collections
namespace System.Collections.Generic
val dict: Dictionary<System.DateTime,int>
Multiple items
type Dictionary<'TKey,'TValue> = interface ICollection<KeyValuePair<'TKey,'TValue>> interface IEnumerable<KeyValuePair<'TKey,'TValue>> interface IEnumerable interface IDictionary<'TKey,'TValue> interface IReadOnlyCollection<KeyValuePair<'TKey,'TValue>> interface IReadOnlyDictionary<'TKey,'TValue> interface ICollection interface IDictionary interface IDeserializationCallback interface ISerializable ...
--------------------
Dictionary() : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>) : Dictionary<'TKey,'TValue>
Dictionary(comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int) : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Multiple items
[<Struct>] type DateTime = new: date: DateOnly * time: TimeOnly -> unit + 16 overloads member Add: value: TimeSpan -> DateTime member AddDays: value: float -> DateTime member AddHours: value: float -> DateTime member AddMicroseconds: value: float -> DateTime member AddMilliseconds: value: float -> DateTime member AddMinutes: value: float -> DateTime member AddMonths: months: int -> DateTime member AddSeconds: value: float -> DateTime member AddTicks: value: int64 -> DateTime ...
--------------------
System.DateTime ()
System.DateTime(ticks: int64) : System.DateTime
System.DateTime(date: System.DateOnly, time: System.TimeOnly) : System.DateTime
System.DateTime(ticks: int64, kind: System.DateTimeKind) : System.DateTime
System.DateTime(date: System.DateOnly, time: System.TimeOnly, kind: System.DateTimeKind) : System.DateTime
System.DateTime(year: int, month: int, day: int) : System.DateTime
System.DateTime(year: int, month: int, day: int, calendar: System.Globalization.Calendar) : System.DateTime
System.DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int) : System.DateTime
System.DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, kind: System.DateTimeKind) : System.DateTime
System.DateTime(year: int, month: int, day: int, hour: int, minute: int, second: int, calendar: System.Globalization.Calendar) : System.DateTime
Multiple items
val int: value: 'T -> int (requires member op_Explicit)
--------------------
type int = int32
--------------------
type int<'Measure> = int
module HashIdentity from Microsoft.FSharp.Collections
val NonStructural<'T (requires equality and member (=))> : IEqualityComparer<'T> (requires equality and member (=))
Dictionary.Add(key: System.DateTime, value: int) : unit
property System.DateTime.Now: System.DateTime with get
<summary>Gets a <see cref="T:System.DateTime" /> object that is set to the current date and time on this computer, expressed as the local time.</summary>
<returns>An object whose value is the current local date and time.</returns>
Get an implementation of equality semantics using reference equality and reference hashing.
IEqualityComparer<'T>
An object implementing IEqualityComparer using LanguagePrimitives.PhysicalEquality and LanguagePrimitives.PhysicalHash.
Create a dictionary which uses reference equality and hashing on the key, giving each key reference identity:
open System.Collections.Generic
let dict = new Dictionary<int array,int>(HashIdentity.Structural)
let arr1 = [| 1;2;3 |]
let arr2 = [| 1;2;3 |]
dict.Add(arr1, 6)
dict.Add(arr2, 7)
namespace System
namespace System.Collections
namespace System.Collections.Generic
val dict: Dictionary<int array,int>
Multiple items
type Dictionary<'TKey,'TValue> = interface ICollection<KeyValuePair<'TKey,'TValue>> interface IEnumerable<KeyValuePair<'TKey,'TValue>> interface IEnumerable interface IDictionary<'TKey,'TValue> interface IReadOnlyCollection<KeyValuePair<'TKey,'TValue>> interface IReadOnlyDictionary<'TKey,'TValue> interface ICollection interface IDictionary interface IDeserializationCallback interface ISerializable ...
--------------------
Dictionary() : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>) : Dictionary<'TKey,'TValue>
Dictionary(comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int) : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Multiple items
val int: value: 'T -> int (requires member op_Explicit)
--------------------
type int = int32
--------------------
type int<'Measure> = int
type 'T array = 'T array
module HashIdentity from Microsoft.FSharp.Collections
val Structural<'T (requires equality)> : IEqualityComparer<'T> (requires equality)
val arr1: int array
val arr2: int array
Dictionary.Add(key: int array, value: int) : unit
In this example, two entries are added to the dictionary, as the arrays have different object reference identity.Get an implementation of equality semantics using structural equality and structural hashing.
IEqualityComparer<'T>
An object implementing IEqualityComparer using Operators.op_Equality and Operators.hash.
Create a dictionary which uses structural equality and structural hashing on the key, allowing an array as a key:
open System.Collections.Generic
let dict = new Dictionary<int array,int>(HashIdentity.Structural)
let arr1 = [| 1;2;3 |]
let arr2 = [| 1;2;3 |]
dict.[arr1] <- 6
dict.[arr2] >- 7
namespace System
namespace System.Collections
namespace System.Collections.Generic
val dict: Dictionary<int array,int>
Multiple items
type Dictionary<'TKey,'TValue> = interface ICollection<KeyValuePair<'TKey,'TValue>> interface IEnumerable<KeyValuePair<'TKey,'TValue>> interface IEnumerable interface IDictionary<'TKey,'TValue> interface IReadOnlyCollection<KeyValuePair<'TKey,'TValue>> interface IReadOnlyDictionary<'TKey,'TValue> interface ICollection interface IDictionary interface IDeserializationCallback interface ISerializable ...
--------------------
Dictionary() : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>) : Dictionary<'TKey,'TValue>
Dictionary(comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int) : Dictionary<'TKey,'TValue>
Dictionary(dictionary: IDictionary<'TKey,'TValue>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(collection: IEnumerable<KeyValuePair<'TKey,'TValue>>, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Dictionary(capacity: int, comparer: IEqualityComparer<'TKey>) : Dictionary<'TKey,'TValue>
Multiple items
val int: value: 'T -> int (requires member op_Explicit)
--------------------
type int = int32
--------------------
type int<'Measure> = int
type 'T array = 'T array
module HashIdentity from Microsoft.FSharp.Collections
val Structural<'T (requires equality)> : IEqualityComparer<'T> (requires equality)
val arr1: int array
val arr2: int array
In this example, only one entry is added to the dictionary, as the arrays identical by structural equality.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4