这个函数应该递归地告诉两个列表的每个元素的区别。但是当我运行它时,ocaml不喜欢类型和连接。
let rec diffImRow image1Row image2Row =
if List.length image1Row = 0
then []
else ((List.hd image2Row) - (List.hd image1Row)) :: diffImRow (List.hd image1Row), (List.hd image2Row)
;;
答案 0 :(得分:0)
这部分代码存在一些问题:diffImRow (List.hd image1Row), (List.hd image2Row)
首先,您要在::运算符的右侧发送每个列表的头部。你想用右侧每个列表的尾部递归。另外,参数之间有逗号。代码的工作原理如下:
let rec diffImRow image1Row image2Row =
if List.length image1Row = 0
then []
else ((List.hd image2Row) - (List.hd image1Row)) :: diffImRow (List.tl image1Row) (List.tl image2Row)