gpt4 book ai didi

sml - 标准 ML 递归函数错误

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

我刚刚接触机器学习编程,并在一本书中找到了这个练习。该练习要求构建一个采用整数和列表的递归函数。如果 L=[a1,a2,a3],则所需结果为 [ai+1,ai+2,...,an,a1,a2,...,ai]。因此,我编写了一个函数,经过很多小时后,我将错误范围缩小到我无法理解的错误。这是我的功能:

fun cycle L i = 
if i = 0 then L
else (cycle tl(L) (i-1)) @ [hd(L)];

我将上传一张包含我收到的错误的图像,以便有人可以向我解释口译员想对我说什么。

enter image description here

“a”旁边的数字仅显示列表中这些元素的顺序。因此,对于 L=[1,2,3,4,5] 且 i = 2,所需结果是列表 L =[3,4,5,1,2]。我认为列表的类型在这个问题中并不重要。希望这个进一步的解释有帮助

最佳答案

这是递归调用cycle tl(L) (i-1)的语法问题。

在SML中,函数应用的语法是并置,而不是括号。在您的情况下,tl(L)确实使用参数L调用函数tl,但这相当于tl L >。括号是多余的,因此被忽略。

现在,如果您替换原始调用中的最小版本,您将得到:cycle tl L (i-1)。它使用三个参数调用 cycle,而不是仅两个参数。

正确的书写方式是:cycle (tl L) (i-1)

关于sml - 标准 ML 递归函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189792/

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