我想编写一个函数来构建两个整数之间的列表,包括两个整数
rec myFunc xy将构建一个包含x和y之间所有int的列表,包括x和y
对于现在的逻辑,我有这样的事情:
let rec buildList i n = let x = i+1 in if i <= n then i::(buildList x n)
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个错误"表达式有类型"列表,但是表达式需要类型单位.
我认为buildList返回一个int列表,我作为一个int,所以cons运算符是有效的,但它说它应该是无效的?
为什么会发生这种情况,我该如何解决?
如果条件为true,则返回列表i::(buildList x n).如果不是这样,你会回报什么?
添加else []到您的函数以在不满足条件时返回空列表.如果没有else,编译器会认为是else ()(因此错误消息).