Haskell使用键提取元素
嗨,我对Haskell有点意见,我对这门语言还不熟悉,所以这里有个问题,我有:Haskell使用键提取元素,haskell,Haskell,嗨,我对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 .
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
我陷入困境,缺乏想法。谢谢这应该行得通
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代码>这是安全的。据我所知,您的数据定义是无效的Haskell:类型应该以大写开头,属性/函数应该以小写开头。你能不能先重写这个问题,并(用自然语言)解释一下你要解决什么问题?@WillemVanOnsem是的,首先我像你说的那样修改了数据,我的问题是,对于我来说,用这个函数实现函数的正确语法是什么:st::Ord v=>Setup v->v->status谢谢我喜欢的想法,也许它对我帮助很大,顺便问一下,你对函数有什么建议isher::Ord v=>Setup v->v->Bool
我考虑过如何使用Map.member
,但是我的语法总是失败,函数应该检查键上的元素是否正确status@Haskell-新手尝试Map.member e(setupMap c)