let rec morse2 c s1 s2 = match s1 with
| [] -> []
| g::r when (caps c = g) -> List.hd(s2)
| g::r -> morse2 c r (List.tl(s2));;
val morse2 : char -> char list -> 'a list list -> 'a list = <fun>
您好,
我的函数得到一个char和两个列表,第一个是字符列表,第二个应该是字符串列表但是由于某种原因它只接受字符串列表的列表。该函数的作用基本上是检查第一个列表中的char是否与作为输入给定的char匹配,如果是,它返回第二个列表中相同位置的元素,该列表应该是字符串而不是字符串列表。 / p>
caps c
函数仅转换字母中的字符。
答案 0 :(得分:2)
行| [] -> []
告诉编译器该函数返回一个列表,然后行| g::r when (caps c = g) -> List.hd(s2)
告诉编译器该函数可以返回List.hd(s2)
。因此List.hd(s2)
必须是列表,s2
必须是列表列表。