F# 如果没有额外的let绑定,如何在List.map之后使用List.exists?

F# 如果没有额外的let绑定,如何在List.map之后使用List.exists?,f#,F#,但这给了: 此表达式应具有类型ProcessAttachmentResult list,但此处具有类型bool 似乎你需要: attachments |> List.map processAttachment |> List.exists (fun r -> r = ValidAttachment) 由于某种原因,exists与map中的参数顺序不同。您似乎需要: attachments |> List.map processAttachment |> List.

但这给了:

此表达式应具有类型
ProcessAttachmentResult list
,但此处具有类型
bool

似乎你需要:

attachments |> List.map processAttachment |> List.exists (fun r -> r = ValidAttachment)
由于某种原因,
exists
map
中的参数顺序不同。您似乎需要:

attachments |> List.map processAttachment |> List.exists (fun r -> r = ValidAttachment)

由于某种原因,
exists
map

中的参数顺序不同。正如pad在一篇评论中提到的,您的方法没有任何问题。您一定是意外地重新定义了某些内置函数(如
List.exists
)。要检查这一点,请尝试打开一个新的F#脚本文件并粘贴以下代码

它本质上是您的代码,添加了缺少的声明,并且它的类型检查很好:

let emailContainsValidAttachments = 
    List.exists ( fun r -> r = ValidAttachment) (List.map attachments processAttachment)
类型ProcessAttachmentResult=ValidationTachment | InvalidateTachment
类型附件={Name:string}
让附件=[]
让我们移动a b=()
让电子邮件=0
让toProcessedFolder=“”
让toErrorFolder=“”
let processAttachment(附件:附件)=
如果附件.Name=“test.txt”,则
printfn“%s有效”//TOMAS:此处存在小问题-您错过了参数
验证
其他的
printfn“%s”附件无效。名称
无效附加
//附件属于列表类型
让processedAttachments=attachments |>List.map processAttachment
//ProcessAttachmentResult列表
让EmailContains验证附件=
List.exists(fun r->r=validateAttachment)处理的附件
将EmailContains验证附件与匹配
|true->将电子邮件移动到已处理文件夹
|->将电子邮件移动到错误文件夹
//托马斯:这里没问题-这种类型的检查没有错误
附件
|>List.map进程附件
|>List.exists(乐趣r->r=ValidAttachment)

正如pad在评论中提到的,您的方法没有任何问题。您一定是意外地重新定义了某些内置函数(如
List.exists
)。要检查这一点,请尝试打开一个新的F#脚本文件并粘贴以下代码

它本质上是您的代码,添加了缺少的声明,并且它的类型检查很好:

let emailContainsValidAttachments = 
    List.exists ( fun r -> r = ValidAttachment) (List.map attachments processAttachment)
类型ProcessAttachmentResult=ValidationTachment | InvalidateTachment
类型附件={Name:string}
让附件=[]
让我们移动a b=()
让电子邮件=0
让toProcessedFolder=“”
让toErrorFolder=“”
let processAttachment(附件:附件)=
如果附件.Name=“test.txt”,则
printfn“%s有效”//TOMAS:此处存在小问题-您错过了参数
验证
其他的
printfn“%s”附件无效。名称
无效附加
//附件属于列表类型
让processedAttachments=attachments |>List.map processAttachment
//ProcessAttachmentResult列表
让EmailContains验证附件=
List.exists(fun r->r=validateAttachment)处理的附件
将EmailContains验证附件与匹配
|true->将电子邮件移动到已处理文件夹
|->将电子邮件移动到错误文件夹
//托马斯:这里没问题-这种类型的检查没有错误
附件
|>List.map进程附件
|>List.exists(乐趣r->r=ValidAttachment)

您的方法非常好。您是否在某个地方重新定义了
List.exists
List.map
?您的方法非常好。您是否在某处重新定义了
List.exists
List.map