F#:创建一个包含所有列表头部的列表,在列表中

F#: Create a list that contains the head of all the lists, in the list

我正在尝试创建一个函数来获取列表 ([[]]) 中所有列表的头部。到目前为止,我已经找到了如何获取列表中所有列表的所有第一个整数,但我似乎无法将其放入同一函数的列表中。

let isTable (llst : list<list<'a>>) : bool =
    List.forall (fun (elem : list<'a>) -> not elem.IsEmpty && elem.Length = elem.Length) llst


let a = [[1;2;3];[4;5;6]]
printfn "%A" (isTable a)     

List.iter (fun x -> printfn "%A " (List.head x)) a

有人可以帮忙吗?

您可以使用 List.map 将您已经找到的 List.head 应用到每个列表。

let a = [[1;2;3];[4;5;6]]
let collectHeads l = List.map List.head l
printfn "%A" (collectHeads a)  // [1,4]

List.head 不同,List.map 是一个高阶函数,需要一个函数作为参数。预期的功能应该采用列表类型的元素和 return 另一个元素。碰巧 List.head 就是这样做的:它将一个列表作为输入,return 的头部作为结果元素。