我正在尝试编写一个divide函数(作为合并排序的一部分),该函数接受一个列表并返回两个长度大致相同的列表。我想使用List.length()函数来完成此操作。我的代码是: let rec transRec l1 l2 = match l1, l2 with | l1, h :: tail -> if List.lengthlist
but an exp
我知道,当使用ocaml模式匹配时,可以使用h::t,当使用这个时,h引用列表中的第一个元素,t引用列表的其余元素。是否可以使用相同类型的匹配来获取列表中的最后一个元素。因此,t将引用最后一个元素,h将引用列表的其余部分。这样做有用的一个代码示例是
let rec remove x y = match y wi
我有一个定义为type abc = bool->int;;的类型,它解释了从bool到int的简单映射。我的问题是,我如何使用这个type abctype Color = Red|Green|Blue|Dark of Color|Light of Color;;
然后我就可以使用像DarkRed;;拥有type Color这样的东西了。但是现在我似乎不能使用这个新的type abc了。
我正在用OCaml编写一种形式的转换,它接受一个函数,也接受一个要转换的列表。我知道我的模式匹配在类型检查方面出了问题,因为它不会编译,并声称类型不匹配,但我不确定我的情况到底出了什么问题。当我尝试编译时,我收到一个带有下划线的函数名称的实际声明错误。-> []
| h::tl -> if f h = Some h