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 的头部作为结果元素。
我正在尝试创建一个函数来获取列表 ([[]]) 中所有列表的头部。到目前为止,我已经找到了如何获取列表中所有列表的所有第一个整数,但我似乎无法将其放入同一函数的列表中。
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 的头部作为结果元素。