gpt4 book ai didi

f# - 基本 f# 错误 - 模式匹配意味着错误的类型

转载 作者:行者123 更新时间:2023-12-01 04:58:57 24 4
gpt4 key购买 nike

以下代码采用 2 个参数。第一个是三元组列表:三元组 (d,m,y) 用于表示日期。

第二个是一个整数,它是一个月

该代码旨在计算列表中该月份的日期出现次数

p.s.我想这可能看起来像一个家庭作业问题 - 它不是。它来自我今年早些时候在 ML 中完成的一门类(class),我正在尝试重做 f# 中的所有练习。所以这只是为了我的利益

let rec number_in_month (dates : (int * int * int) list, month) =  
match dates with
| [] -> 0
| (_,y,_) when month = y -> 1 + number_in_month(dates.Tail, month)
| _ -> number_in_month(dates.Tail, month)

但它给出了错误:

This expression was expected to have type (int * int * int) list but here has type 'a * 'b * 'c



知道我做错了什么吗?

最佳答案

您的第二个模式匹配尝试匹配单个日期 (_,y,_)但它正在与您的日期列表匹配。尝试使用 (_,y,_)::_ 进行匹配反而。

更惯用的方法是使用 (_,y,_)::tail 进行匹配。并使用 tail而不是 dates.Tail后面的表达式。

关于f# - 基本 f# 错误 - 模式匹配意味着错误的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215092/

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