【发布时间】:2019-02-12 00:50:18
【问题描述】:
我必须使用以下数据类型:
type ilist = E | L of int * ilist
我似乎无法在使用标准类型在线 ([1;2;3] ) 之外的列表方面找到太多帮助
我要写一个函数,它接受一个列表并颠倒顺序
例如:反向 (L(1, L(2, L(3, E)))) 将输出 (L(3, L(2, L(1, E))))
到目前为止,这是我的代码:
let rec reverse l =
match l with
| E -> failwith "Empty List"
| L(h, E) -> h
| L(h, t) -> // append tail and recursive call with rest of list?
let list = reverse (L(1, L(2, L(3, E))))
printfn "reversed list: %A" list
感谢您的帮助!
【问题讨论】:
-
在链接副本中,仍然使用内置列表类型,但定义了函数。您只需将
[]替换为E案例,将head :: tail替换为L (head, tail)案例。 -
这看起来像是他们将列表分解为子列表?所以我相信这不是一个重复的问题,还是只是为了参考?
-
原来的问题有点不同,但答案是一样的。接受的答案中的反向功能应该是您所需要的。