Haskell提取元素与键

问题描述 投票:-2回答:1

嗨,我对Haskell有点问题,我是语言的新手,所以这里是问题,我有:

data Setup v = Setup {
    SetupMap   :: Map.Map v Status,
    SetupGraph :: Graph v
}

我想实现这个功能:

st :: Ord v => Setup v -> v -> Status

它应该返回键映射的状态,我尝试了几个但没有编译如下:

st c e = Map.fromList(Map.keys . SetupMap c ) Map.! e

我陷入困境,缺乏想法。谢谢

haskell
1个回答
1
投票

这应该工作。

data Setup v = Setup {
    setupMap   :: Map.Map v Status,
    setupGraph :: Graph v
}

st :: Ord v => Setup v -> v -> Status
st c e = setupMap c Map.! e

请注意,当密钥不存在时,Map.!会使程序崩溃。你应该返回Maybe Status并使用安全的Map.!?

© www.soinside.com 2019 - 2024. All rights reserved.