gpt4 book ai didi

list - F# 将函数转换为使用高阶函数

转载 作者:行者123 更新时间:2023-12-01 05:51:31 25 4
gpt4 key购买 nike

我有这一系列函数,isMemberaddElemcountries:

let rec isMember x = function
| y::ys -> y=x || (isMember x ys)
| [] -> false

let addElem x ys = if isMember x ys then ys else x::ys

let rec countries = function
| [] -> []
| (c1,c2)::m -> addElem c1 (addElem c2 (countries m))

我想使用高阶函数重写国家,但我不完全确定如何:

我的猜测是它与 List.map 有关,因为我正在对列表的每个元素应用一个函数。

let countriesHigherOrder m = 
List.map (fun x -> addElem x m)

最佳答案

除了使用 List.map,您可以将 List.fold 与您初始化为 [] 的 accu 一起使用,并将元素添加到 accu。

let countriesHigherOrder m = 
List.fold (fun acc (c1,c2) -> addElem c1 (addElem c2 acc)) [] m

或通过定义 addPair:

let addPair (x, y) ys =
addElem x (addElem y ys)


let countriesHigherOrder m =
List.fold (fun acc (c1,c2) -> addPair (c1, c2) acc) [] m

关于list - F# 将函数转换为使用高阶函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47018256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com