C# developers should be familiar with the yield keyword that was introduced in C# 2.0, and you’ll be pleased to know that F# also has the yield keyword which works in conjunction with F#’s equivalent of IEnumerable — sequences.
In F#, you can defined record types which differ from tuples and discriminated unions in that they allow you to organize values into a type and name those values through fields: