我想做的是当我有
rec1 = [("name", "obj-1"), ("status", "up"), ("region", "us")]
那么我想拥有
[( "us", [("up", [("name", "obj-1"), ("status", "up"), ("region", "us")])])]
这是我在 Haskell 中提出的代码。
rec1 = [("name", "obj-1"), ("status", "up"), ("region", "us")]
convertto rec = Prelude.foldl (\map (k, v) -> Data.Map.insert k v map) Data.Map.empty rec
justfold = Prelude.foldr (\key val -> Data.Map.insert key val Data.Map.empty) (convertto rec1) ["us","up"]
在上面的第三行中,在我的 lambda 函数定义中,编译器不同意 val 的类型。它说它需要一个 Char 并且正在获取一个 String 或无法将 Map String 与列表类型匹配。
我对 Haskell 不是很好,所以看看是否有人可以给我指点。
谢谢。
编辑:更正了输出类型。我一开始打错了。