gpt4 book ai didi

list - 带累加器列表的 SML 逆列表

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

我正在尝试在 SML 上执行一个函数,该函数反转第一个列表,然后与第二个列表连接(类似于:list1 = [5,3,1] 和 list 2 = [6 7 8],然后 inv (list1,list2) = [ 1,3,5,6,7,8].)这是代码:

fun inv (nil,nil) = []
|inv (ha::ta,hb::tb) =
if ha = [] then ta::(hb::tb)
else ha::inv(ta,hb::tb);

它返回这个:

错误:if 分支的类型不一致 [circularity]then branch: ''Z列表列表列表else branch: ''Z列表列表在表达中:

如果 ha = nil 那么 ta::hb::tb 否则 ha::inv (ta,::)

谁能帮我解决这个问题?

最佳答案

fun inv ([], b) = b
| inv (h::t, b) = inv(t, h::b)

请注意,您不需要在第二个列表中进行模式匹配。这是尾递归函数的典型示例;这是反转具有恒定堆栈空间的列表的方法。您的错误是使用 cons (::),其中第一个参数的类型为“列表”。

关于list - 带累加器列表的 SML 逆列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18576574/

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