gpt4 book ai didi

recursion - 递归列表创建函数。类型错误

转载 作者:行者123 更新时间:2023-12-05 01:20:13 25 4
gpt4 key购买 nike

我有一个 Ocaml 函数,它给了我错误。

我正在尝试做的事情:

递归创建一个大小为“限制”的随机数 (0-2) 列表。

这是我所拥有的:

let rec carDoorNumbers = fun limit -> 
match limit with
| [1] -> Random.int 3
| [] -> Random.int 3 :: carDoorNumbers (limit-1);;

我收到此错误:
Error: This expression has type 'a list
but an expression was expected of type int

最佳答案

想想你的函数必须做什么:给定一个限制,你必须创建一个数字列表。所以你的类型类似于 carDoorNumbers : int -> int list .

看看那个,你似乎有两个错误。首先,您正在匹配 limit (应该是 int )针对列表模式。 [1] -> ...匹配仅包含元素 1 的列表和 []匹配空列表;你真的想匹配号码1和任何其他号码 n .

第二个错误是您在 match 中返回了两种不同的类型。陈述。请记住,您应该返回一个列表。在第一种情况下,您返回 Random.int 3 ,这是一个 int而不是 int list .你真正想在这里返回的是类似 [Random.int 3] 的东西。 .

你得到的错误有点令人困惑。因为您返回的第一件事是 int ,它希望您的第二件事也是 int .但是,您的第二种情况实际上是正确的:您确实返回了 int list !但是,编译器不知道你的意思,所以它的错误是倒退的;而不是改变 int listint ,您需要更改 intint list .

关于recursion - 递归列表创建函数。类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com