【问题标题】:F# If Statement List.existsF# If 语句 List.exists
【发布时间】:2017-02-13 17:27:50
【问题描述】:

这是一项学校作业,但我要发布的所有内容都是由我和我自己完成的。因此,我只需要你的帮助来完成我被卡住的任务中的一小步。

let rec removeDuplicates2 xs =
  match xs with
  |[]->[]
  |y::ys -> if y = (List.exists y ys) then
              (removeDuplicates2 ys)
            else
              y::(removeDuplicates2 ys)

printfn "%A" (removeDuplicates2 [3;1;3;2;1]) // result must be [3;1;2] 

我需要帮助的是制作 if 语句来检查元素 y 是否是列表 ys 的成员

目前我收到错误消息:“此表达式应具有类型 ''a -> 布尔值' 但这里有类型 '布尔'"

谁能告诉我我做错了什么?

【问题讨论】:

  • 首先,您将yList.exists y ys 进行比较,后者应该返回真或假。你可能想写if (List.exists y ys) then
  • 第二,List.exists 需要一个函数。如果要检查列表是否包含项目,请使用 List.contains
  • 我认为这个练习并不意味着使用标准函数:)

标签: list if-statement f# exists elements


【解决方案1】:

List.exists 期望第一个参数是一个函数,它将在元素上检查并返回布尔值。您想检查元素是否在您可以编写的列表中:

if List.exists ((=) y) ys then

甚至:

if List.contains y ys then

遵循 Panagiotis 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2010-10-25
    • 2016-03-26
    相关资源
    最近更新 更多