相互比较两个列表(标准ML)

时间:2018-08-20 07:33:12

标签: smlnj

我之前曾问过,但没有答案,所以我将尝试重写问题。

我有两个列表。第一个列表是日期(int * int * int)列表,第二个列表仅是月份。例如{class Component { private data: any; private uploader: any; add(data, action) { this.data.loader = true; this.uploader.uploadAll(); this.uploader.onAfterAddingFile = (file) => { file.withCredentials = false; }; this.uploader.onCompleteItem = (item: any, response: any, status: any, headers: any) => { this.data.dp = JSON.parse(response); // when on complete ends we set the avatar this.setAvatar(data, action); }; } private setAvatar(data, action) { //console.log(this.data.dp); var frmData = JSON.stringify({ 'fname': data.fname, 'mname': data.mname, 'lname': data.lname, 'contact': data.phone, 'email': data.email, 'address': data.address, 'country': data.country, 'state': data.state, 'pin': data.pin, 'uimg': ** WANT TO ACCESS IT HERE ** }); console.log(this.data.headers); if (action == 'Save') { this.http.post("http://127.0.0.1/ci/index.php/api/account/register", frmData, this.options) .map(res => res.json()) .subscribe(data => { this.data.loader = false; this.data.message = data.message; this.snackBar.open('Registered Successfully.', '', { duration: 3000, }); } else { this.snackBar.open(data.message, '', { duration: 3000, }); } this.data.fname = ''; this.data.mname = ''; this.data.lname = ''; this.data.phone = ''; this.data.email = ''; this.data.address = ''; this.data.pin = ''; this.data.state = ''; this.data.country = ''; }, error => { this.data.message = 'Error'; }); } } )int列表

注意:假设月份列表中的任何数字都不会重复,并且只会重复1-12。

我想检查多少个日期与月份列表中的月份相同。 示例:1,2,3,4,5,6,7,8,9,10,11,12

我知道如何将列表与数字进行递归比较,但是我不知道如何将列表与列表进行递归比较...

[(87,09,08),(67,08,17),(90,08,23)], [1,5,8] = 2

1 个答案:

答案 0 :(得分:0)

将问题分解为较小的问题。

例如,假设您有一个函数number_in_month,该函数可以统计一个月的发生次数。

然后您可以将其写为

fun number_in_months (dates, []) = 0
  | number_in_months (dates, x::xs) =  number_in_month(dates, x) + number_in_months(dates, xs)

现在剩下的只是那个函数,因为它只有一个列表参数,而不是两个,所以写起来更简单。
(将其保留为练习。)