haskell - 在 Haskell 中提取图形的元素
问题描述
我有一个关于 Haskell 的小问题。如果我有代表这样一个图表的数据类型:
import Data.Map (Map,empty,member,insert)
import Graphviz
-- | A directed graph
data Graph v = Graph
{ arcsMap :: Map v [v] -- A map associating a vertex with its
successors
, labelMap :: Map v String -- The Graphviz label of each node
, styleMap :: Map v String -- The Graphviz style of each node
}
我想通过访问给定图形的每个顶点来创建一个列表。
像这样:
-- | Returns the list of vertices of a graph in ascending order
--
-- >>> vertices emptyGraph
-- []
-- >>> vertices $ addVertices emptyGraph [1,4,5,2,1]
-- [1,2,4,5]
vertices :: Graph v -> [v]
我的问题是如何告诉 Haskell 查看 arcsMap 中的每个顶点并用它创建一个列表?谢谢 !!!
解决方案
该函数keys
返回地图的所有键。所以你可以这样实现vertices
:
vertices :: Graph v -> [v]
vertices = keys . arcsMap
推荐阅读
- kubernetes - 使用 sh 命令时 Kubernetes Pod 的容器未运行
- flutter - 如何创建自定义颤振 sdk 小部件,重建颤振和使用新的小部件
- python - 在不同列上解析 JSON 的结果
- javascript - 我只需要在开始日期选择的日期选择器中显示未来一个月的日期
- python - 输入形状引起的负维度
- php - 如何使用多个 PHP for 循环从数组中检索特定值?
- python - 我无法安装 Pygame 模块
- excel - 用于删除未循环行的 Excel VBA 代码
- haskell - 如何使用命令“runhaskell”?
- c# - 在客户端标头 C# 中设置基本身份验证