相关疑难解决方法(0)

F#更改列表中的元素并返回完整的新列表

我有一个类型列表(string * (int * int)) list.我希望能够搜索列表,通过它的string标识符找到正确的元素,对其中一个进行计算ints,然后返回完整的修改后的列表.

例:

给出一个清单

let st = [("a1",(100,10)); ("a2",(50,20)); ("a3",(25,40))]

我正在尝试创建一个函数,它获取元素之一并从ints元组中的一个中减去数字.

get ("a2",10) st 
//Expected result: st' = [("a1",(100,10)); ("a2",(40,20)); ("a3",(25,40))]
Run Code Online (Sandbox Code Playgroud)

我觉得我差不多了,但是我对以下功能感到困惑:

let rec get (a,k) st =
    match st with
    | (a',(n',p'))::rest when a'=a && k<=n' -> (n'-k,p')::rest
    | (a',(n',p'))::rest                    -> (n',p')::get (a,k) rest
    | _                                     -> failwith "Illegal input"
Run Code Online (Sandbox Code Playgroud)

这将返回[("a2",(40,20)); ("a3",(25,40))]并因此缺少第一个a1元素.任何提示?

f#

4
推荐指数
1
解决办法
2002
查看次数

标签 统计

f# ×1