arrays - 检查列表和数组是否相等 F#

我正在尝试比较列表和数组,看看它们是否相等。假设我们有一个列表 list = [1;2;3;4] 和一个数组 ar = [|1;2;3;4|]。如果相等,该函数应返回 true,如果不相等,则应返回 false。我是这样做的:

let list = [1;2;3;4]
let ar = [|1;2;3;4|]

let list' = Array.toList ar
(list = list')

所以基本上我所做的就是简单地转换和比较两个列表。我的问题是有没有其他方法可以做到这一点,我的意思是不简单地在列表和数组之间转换并且不完全依赖库函数.

最佳答案

您可以利用列表和数组(以及大多数其他集合)实现 seq<'a> 的事实接口(interface)(.NET 术语中的 IEnumerable<T>),因此您可以将它们传递给 Seq 中的函数没有任何转换的模块。这只是使用一个接口(interface),所以没有开销。

我能想到的最简单的检查两个序列是否相同的函数是forall2 ,它采用两个序列并检查谓词是否对成对的元素成立。在这种情况下,谓词只是相等性测试 (fun a b -> a = b)你可以缩写为(=) :

let list = [1;2;3;4]
let ar = [|1;2;3;4|]

Seq.forall2 (=) list ar

https://stackoverflow.com/questions/65801604/

相关文章:

python - 如何从时间序列数据中选择前 n 列而不是在 pandas 中使用 nlargest

javascript - 句号、单词和冒号的正则表达式

javascript - 对象可能是 'null' : TypeScript, React useR

reactjs - 有没有 Ionicons : Icon props?

python - 如何连接来自 3 个小整数的字节以生成由 Python 中的这些字节表示的更大数字

c# - 如何使 IEnumerable 和 IQueryable 异步?

react-native - react native : Refresh Controll not

list - 在 Elixir 中使用类型规范中的原子列表

vuejs3 - vue3 中 shallowReactive 和 shallowRef 的区别?

java - Java 是否根据结果假定类型?