Filter F#使用“设置”过滤贴图关键帧以获得缩小的贴图

Filter F#使用“设置”过滤贴图关键帧以获得缩小的贴图,filter,f#,set,maps,key,Filter,F#,Set,Maps,Key,关于F#和使用贴图和集合过滤带有关键点的贴图,我有一个问题。 我已经尝试过几种方法,但我无法理解它在F中的工作原理,需要一些关于如何在F中编写所需代码的建议 这是我迄今为止尝试过的代码,只返回set head=key的第一个实例: let rec sumECTS cs cb = Map.filter(fun key desc -> key = (cs |> Seq.head)) cb ;; 其中cs=课程集: let courseSet = set [ cn1 ; cn3 ; c

关于F#和使用贴图和集合过滤带有关键点的贴图,我有一个问题。 我已经尝试过几种方法,但我无法理解它在F中的工作原理,需要一些关于如何在F中编写所需代码的建议

这是我迄今为止尝试过的代码,只返回set head=key的第一个实例:

let rec sumECTS cs cb = 
Map.filter(fun key desc -> key = (cs |> Seq.head)) cb
;;
其中cs=课程集:

let courseSet = set [ cn1 ; cn3 ; cn6 ];;
cn#是一个5位数的courseNo

Cb=课程库:

let Coursebase1 = 
Map.empty.
    Add(cn1,cd1).
    Add(cn2,cd2).
    Add(cn3,cd3).
    Add(cn4,cd4).
    Add(cn5,cd5).
    Add(cn6,cd6);;

其中cd#是两位数的ECTS点。

可能是沿着这些线的某个东西(示例结果为66)


非常不清楚你到底想做什么。我想你应该试着去做-
让sumECTS cs=Map.filter(fun key->Set.contains key cs)
@FoggyFinder你应该做出正确的回答。这是最明显的答案,考虑到这个问题,这是有道理的。
open System

let sumEcts courseSet courseBase =
    let isPartOfCourseSet cn _ =
        courseSet |> Set.contains cn

    courseBase
    |> Map.filter isPartOfCourseSet
    |> Map.toSeq
    |> Seq.map (fun(cn, cd)->cd)
    |> Seq.sum

let courseBase =
    [
        (11111, 11)
        (22222, 22)
        (33333, 33)
        (44444, 44)
        (55555, 55)
    ]
    |> Map.ofList

let courseSet =
    [11111; 22222; 33333 ]
    |> Set.ofList

courseBase 
|> sumEcts courseSet
|> Console.WriteLine