我想编写一个函数,在两个整数之间构建一个列表,包括
rec myFunc x y 将构建一个列表,其中包含 x 和 y 之间的所有整数,包括 x 和 y
对于现在的逻辑,我有这样的事情:
let rec buildList i n = let x = i+1 in if i <= n then i::(buildList x n)
但这给了我一个错误“表达式的类型为'一个列表,但需要一个单元类型的表达式。
我认为 buildList 正在返回一个整数列表,而 i 作为一个整数,所以 cons 运算符将是有效的,但它说它应该是无效的?
为什么会发生这种情况,我该如何解决?
最佳答案
如果条件为真,则返回列表 i::(buildList x n)
.如果它不是真的,你会返回什么?
添加 else []
到您的函数以在不满足条件时返回空列表。
当您没有 else
,编译器假设它是 else ()
(因此出现错误消息)。
关于list - 在 ocaml 中构建整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5653739/