gpt4 book ai didi

OCaml:使用 Core Set 添加元素的惯用方法是什么?

转载 作者:行者123 更新时间:2023-12-01 06:30:25 27 4
gpt4 key购买 nike

在标准库中,add 函数具有以下签名:

val add : elt -> t -> t

所以我可以使用管道运算符添加元素:

Set.empty |> add elt1 |> add elt2

但是,当我切换到 Core 时,我注意到添加的签名已变为:

val add : ('a, 'cmp) t -> 'a -> ('a, 'cmp) t

现在 set 成为第一个参数。旧的流水线风格不再适用。

使用 Core Set 添加元素的惯用方法是什么?

最佳答案

不要使用管道混淆函数应用!

管道有充分的理由存在,即构建管道,但在您的示例中,您只是在滥用和混淆您的代码。

如果你只想将两个元素添加到一个集合中,就这样写

Set.(add (add empty a) b)

它非常干净清晰。如果你有更多的元素要添加,您可以使用折叠功能提高可读性:

List.fold_left Set.add Set.empty [a; b; c; d; e; f]

我们可以推测 Jane Street 准确地更改了 Set.add 的签名以将其与尾递归的 List.fold_left 一起使用,而 List应该与标准库中的集合一起使用的 .fold_right 不是尾递归的。

关于OCaml:使用 Core Set 添加元素的惯用方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34958186/

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