F# 为什么在if语句中会得到bool的错误消息

F# 为什么在if语句中会得到bool的错误消息,f#,boolean,F#,Boolean,我试图做一个if语句,它应该看看列表是否为空。然后它应该返回一个布尔值true或false。但是我得到了错误信息。我该如何纠正这一点 Lint:如果a为真,那么else为假可能可以重构为a 您的if表达式的格式为if-a-then-true-else-false,因此您可以按照建议对其进行重构。您还可以使用模式匹配来替换fst和snd: let isGameOver (p : player) (fstb, sndb) : bool = List.sum fstb = 0 || List.su

我试图做一个if语句,它应该看看列表是否为空。然后它应该返回一个布尔值true或false。但是我得到了错误信息。我该如何纠正这一点

Lint:
如果a为真,那么else为假
可能可以重构为
a


您的
if
表达式的格式为
if-a-then-true-else-false
,因此您可以按照建议对其进行重构。您还可以使用模式匹配来替换
fst
snd

let isGameOver (p : player) (fstb, sndb) : bool =
  List.sum fstb = 0 || List.sum sndb = 0
为什么在if语句中会收到布尔的错误消息?
我如何纠正这个问题

您需要关注的代码部分是

if List.sum (fst b) = 0 || List.sum (snd b) = 0 then
      true
    else 
      false 
if语句的结果是
bool
,例如
true
false

Lint非常聪明,知道您正在使用
if
返回
bool
,并且if语句的条件部分也是类型
bool
。林特说的是

if (expr) then
      true
    else 
      false 
不需要,只需使用表达式即可完成

所以改变是只使用
if
的表达式部分

List.sum (fst b) = 0 || List.sum (snd b) = 0

这实际上并不是一条错误消息,而是来自的一条消息,表明您可能能够重构代码


linter暗示的是,当表达式
List.sum(fst b)=0 | | List.sum(snd b)=0
true
时,函数返回
true
,当表达式
false
时,函数返回
false
。因此,
if
语句是不必要的。

Ello,缩进在F#中很重要。你能按语法设置缩进格式吗。
List.sum (fst b) = 0 || List.sum (snd b) = 0