Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 从映射中检索多个值_Haskell - Fatal编程技术网

Haskell 从映射中检索多个值

Haskell 从映射中检索多个值,haskell,Haskell,假设我有一张钥匙清单和一张地图。迭代列表以检索映射中与这些键对应的值并创建另一个键列表的最简单方法是什么 retrieveMultipleValues myMap myKeys = map (\x -> lookup x myMap) myKeys -- ??? 在这种情况下: myMap :: Map String String myKeys :: [String] 我的直觉告诉我必须有一种一元的方法来做到这一点。你可以使用查找和映射可能: import Data.Maybe

假设我有一张钥匙清单和一张地图。迭代列表以检索映射中与这些键对应的值并创建另一个键列表的最简单方法是什么

retrieveMultipleValues myMap myKeys = 
  map (\x -> lookup x myMap) myKeys -- ???
在这种情况下:

myMap :: Map String String
myKeys :: [String]

我的直觉告诉我必须有一种一元的方法来做到这一点。

你可以使用
查找
映射可能

import Data.Maybe

retrieveMultipleValues m = mapMaybe (\k -> Map.lookup k m)

您可以使用
lookup
mappaye

import Data.Maybe

retrieveMultipleValues m = mapMaybe (\k -> Map.lookup k m)

您对
检索多值的定义有什么问题?这样就可以了,并给你一个
可能是字符串的列表。你对
检索多值的定义有什么问题?这样就可以了,给你一个
Maybe String
的列表。但是我如何返回一个纯列表,而不是Maybe的列表呢?@AlexanderSupertramp-它返回一个值列表,其中键在映射中。还有一件事。如何确保
retrievemultiplevalue
中的返回值与
myKeys
中的键的顺序相同?如果结果的长度
retrievemultiplevalue
==键的长度
那么它们的顺序是相同的,对吗?@AlexanderSupertramp-
mappaye
的文档建议它应该保留顺序,而当前的实现会保留顺序。但是如何返回纯列表呢,不是Maybe的列表?@AlexanderSupertramp-它返回一个值列表,其中键出现在映射中。还有一件事。如何确保
retrievemultiplevalue
中的返回值与
myKeys
中的键的顺序相同?如果结果
retrieveMultipleValues
==键
的长度
那么它们的顺序是相同的,对吗?@AlexanderSupertramp-
mappaye
的文档建议它应该保留顺序,而当前的实现确实如此。