SG

F# で LINQ 入門 First FirstOrDefault Last LastOrDefault

 始まりは肝心ですし終わりが良くなければ失敗だと思います。SGです。インデクサに 0 や hogeList.Count - 1 なんて書いていませんか? 書いてますね、わたしです。

open System.Linq

let firstKiss (taste : string[]) = 
    taste.First() |> printfn "初めてのキスは%sの味がした"

let lastKiss (taste : string[]) = 
    taste.Last() |> printfn "最後のキスは%sの味だった……"

(* 今回は配列 *)
let taste = [|"涙"; "苺"; "毒"|]

firstKiss taste
lastKiss taste

let empty = [||]

(* シーケンスに要素がないためエラー
firstKiss empty
lastKiss empty
*)

let firstKiss' (taste : string[]) =
    let message (taste : string[]) =
        match taste.FirstOrDefault() with
        | null -> "キスもしたことがない童貞諸君乙であります"
        | aji  -> sprintf "初めてのキスは%sの味がした" aji

    message taste |> printfn "%s"

let lastKiss' (taste : string[]) =
    let message (taste : string[]) =
        match taste.LastOrDefault() with
        | null -> "お前はいままでにしたキスの数を覚えているのか?"
        | aji  -> sprintf "最後のキスは%sの味だった……" aji

    message taste |> printfn "%s"

let parameters = [| taste; empty; |]

Array.iter firstKiss' parameters
Array.iter lastKiss'  parameters

 実行結果

初めてのキスは涙の味がした
最後のキスは毒の味だった……
初めてのキスは涙の味がした
キスもしたことがない童貞諸君乙であります
最後のキスは毒の味だった……
お前はいままでにしたキスの数を覚えているのか?

val firstKiss : string [] -> unit
val lastKiss : string [] -> unit
val taste : string [] = [|"涙"; "苺"; "毒"|]
val empty : 'a []
val firstKiss' : string [] -> unit
val lastKiss' : string [] -> unit
val parameters : string [] [] = [|[|"涙"; "苺"; "毒"|]; [||]|]