以下代码采用2个参数.第一个是三元组列表:三元组(d,m,y)表示日期.
第二个是一个月的整数
该代码用于计算列表中该月份的日期出现次数
ps我想这可能看起来像是一个家庭作业问题 - 事实并非如此.这是我今年早些时候在ML中所做的一个课程,我正在尝试重做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)
Run Code Online (Sandbox Code Playgroud)
但它给出了错误:
该表达式应该具有类型(int*int*int)列表,但这里有类型'a*'b*'c
知道我做错了什么吗?
Mar*_*son 10
您的第二个模式匹配是尝试匹配单个日期,(_,y,_)但它与您的日期列表匹配.请尝试使用匹配(_,y,_)::_.
更惯用的是匹配使用(_,y,_)::tail和tail代替dates.Tail以后在表达式中使用.
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |