Filter 表达式的类型错误

Filter 表达式的类型错误,filter,ocaml,record,Filter,Ocaml,Record,这个问题与此密切相关MyMap的创建方法与该问题中的StringMap相同 # lsc;; - : (MyMap.key * testtype) list = [(("", "Test1"), {name = ""; state = ""; region = "Test1a"}); (("", "Test1a"), {name = ""; state = ""; region = "Test1b"}); (("", "Test2"), {name = ""; state = "";

这个问题与此密切相关
MyMap
的创建方法与该问题中的
StringMap
相同

# lsc;;
- : (MyMap.key * testtype) list =
[(("", "Test1"),
  {name = ""; state = ""; region = "Test1a"});
(("", "Test1a"),
  {name = ""; state = ""; region = "Test1b"});
(("", "Test2"),
  {name = ""; state = ""; region = "Test2"})]
我想创建一个函数,它将为我提供一个来自
lsc
的筛选列表。我想根据
(x,)\u
对其进行过滤。例如,它等于
Test1
,那么函数将返回记录列表

[{name=“”;state=“”;region=“Test1a”};{name=“”;state=“”;region=“Test1b”}]

目前,我只想筛选
lsc
以获得

[(("", "Test1"),
  {name = ""; state = ""; region = "Test1a"});
(("", "Test1a"),
  {name = ""; state = ""; region = "Test1b"})]
MyMap.filter(fun(x,)\ux->x=“Test1”)lsc告诉我以下错误:

Error: This expression has type (MyMap.key * testtype) list
       but an expression was expected of type
         'a MyMap.t = 'a Map.Make(PaireCles).t
从一开始,我以为这是一条路要走,但我总是面临同样的错误。有解决方法吗?

该函数采用函数和地图数据结构,而不是您现有的关联列表。您可以使用筛选键*值对列表

List.filter (fun (x,_) -> x = "Test1") lsc

抱歉,意外复制粘贴了函数中的额外参数,现已修复