因为Seq模块已经具有head类型的函数seq<'a> -> 'a,我将定义一个tryHead带签名的函数seq<'a> -> option<'a>:
module Seq =
let tryHead (ls:seq<'a>) : option<'a> = ls |> Seq.tryPick Some
Run Code Online (Sandbox Code Playgroud)
用它作为:
[1; 2; 3] |> Seq.tryHead
Run Code Online (Sandbox Code Playgroud)
关于 LINQ-to-SQL,请参阅
对于 来说FirstOrDefault,它只是命名空间中的一个扩展方法System.Linq:
let l = [1;2;3]
open System.Linq
let r = l.FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)