gpt4 book ai didi

list - 追加到列表 F# 的开头

转载 作者:行者123 更新时间:2023-12-01 06:08:06 24 4
gpt4 key购买 nike

首先,我知道如何在 f# 中 append 到列表。如果我有 list = [1;2;3] 那么我可以做类似 5::list 的事情,它会给我一个新列表 [ 5;1;2;3]
然而,我写了一个函数,它使用完全相同的语法,而是将它 append 到列表的后面,我终究无法弄清楚为什么。有人可以向我解释为什么我编写的函数将 appends 和 item append 到列表的后面而不是前面吗?

let menu = [("pizza",17);("hotdog",5);("burger", 12);("drink",3);("milkshake",4)]

let rec  insert dict key value =
match dict with
| (k,v) :: tl when k = key -> (k,v)::tl
| (k,v) :: tl -> (k,v)::insert tl key value
| [] -> (key,value) :: []


> insert menu "bacon" 22;;
val it : (string * int) list =
[("pizza", 17); ("hotdog", 5); ("burger", 12); ("drink", 3);
("milkshake", 4); ("bacon", 22)]

我真的不在乎它以何种方式添加到我的列表中,我只是不明白为什么当我使用 cons 运算符时它会结束。

最佳答案

您总是在 列表前面插入新对,这是实际列表末尾的最后一个尾部。

所以如果我们考虑这个例子:

insert [(1, 2)] 3 4
// Returns [(1, 2); (3, 4)]

[(1, 2)]也可以这样写:

(1, 2) :: []

并且您的代码正在有效地执行此操作:

(1, 2) :: (3, 4) :: []

关于list - 追加到列表 F# 的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48987528/

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