Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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,嗨,我对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 .

嗨,我对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
我陷入困境,缺乏想法。谢谢

这应该行得通

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)