ocaml - Ocaml 类型错误:此表达式的类型为 'a * 'b 但表达式应为 'c 列表类型
问题描述
我需要输出一对列表,但我不明白为什么我返回的这对列表类型不正确。
let rec split l = match l with
| [] -> []
| [y] -> [y]
| x :: xs ->
let rec helper l1 acc = match l1 with
| [] -> []
| x :: xs ->
if ((List.length xs) = ((List.length l) / 2)) then
(xs, (x :: acc))
else helper xs (x :: acc)
in helper l []
解决方案
(请花时间在 SO 上复制/粘贴和格式化您的代码,而不是提供指向图像的链接。这样更容易提供帮助,并且在未来更有用。)
辅助函数中的第一种情况match
不返回一对。match
需要返回相同类型的所有情况(当然)。
请注意,您最外层的案例match
也属于不同类型(如果您假设helper
返回一对)。
推荐阅读
- nativescript - 如何从函数内部调用 Vue.render(用于 Facebook 登录)
- html - Bootstrap 4 导航选项卡/药丸在 wordpress 中不起作用
- android - 如何在背景中制作布局中心?
- laravel - 重定向进入空白页面而不重定向到路由 Laravel 5.8
- firebase - 如何在 Flutter 中使用 StreamBuilder 流式传输来自其他 StreamBuilder 的结果
- c# - 我们可以在 c# 中有多个(超过两个)部分类吗?
- c# - 从 C# 获取 ADF 管道 JSON
- c# - 后台任务的全局异常处理
- android-studio - 除非按住 SHIFT,否则无法使用退格键删除代码
- php - 如何去页面行操作锚页面(post.php?post=3&action=?)