我正在使用容器库,我试图在REPL中使用这种方法从集合中提取第一个元素:
let initialSet = insert "x" empty
let setWithTwoElems = insert "y" initialSet
elemAt 0 (filter (\v -> v == "x") setWithTwoElems)
Run Code Online (Sandbox Code Playgroud)
如果传递给过滤器的谓词与Set中的任何元素都不匹配,那么这是行不通的.如果我这样做:
elemAt 0 (filter (\v -> v == "z") setWithTwoElems)
Run Code Online (Sandbox Code Playgroud)
它会爆炸说:
"*** Exception: Set.elemAt: index out of range
CallStack (from HasCallStack):
error, called at libraries/containers/Data/Set/Base.hs:1186:16 in containers-0.5.7.1:Data.Set.Base
Run Code Online (Sandbox Code Playgroud)
哪种蔑视使用Haskell的目的?我想要类似于elemAt(或只是first)返回Maybe结果的东西.
我怎样才能做到这一点?