With F# 6 we gain access to new features in .NET 6. There are many of these but here is a very small sample which are applicable to F# developers.
DateOnly and TimeOnly
Are you tired of using
DateTimeOffset to capture values that are just a date or just a time? Now you don't have to. The new
TimeOnly types solve that problem with their self-explanatory names. Here's a small example of how to use them in F#.
open System let dateTime = DateTime(2022, 1, 1, 14, 30, 00) // 2022-01-01 14:30:00 let date = DateOnly.FromDateTime(dateTime) // 2022-01-01 date.AddDays 100 // 2022-11-04 let time = TimeOnly.FromDateTime(dateTime) // 14:30 time.AddHours 12 // 02:30
As you can see, we still have the relevant methods to add periods of time onto the existing date or time.
This is a new data structure that is like a queue but allows assigning different priorities to items when adding them to the queue. Higher priority items will always be dequeued before lower priority items.
open System.Collections.Generic // Make a priority queue where the values are strings and the priorities are integers let pq = PriorityQueue<string, int>() pq.Enqueue("Medium priority A", 2) pq.Enqueue("High priority", 1) pq.Enqueue("Low priority", 3) pq.Enqueue("Medium priority B", 2) pq.Dequeue() // "High priority" pq.Dequeue() // "Medium priority B" pq.Dequeue() // "Medium priority A" pq.Dequeue() // "Low priority"
Note that the 2 medium priority items could be returned in any order because stability is not guaranteed.