繁体   English   中英

模式匹配Haskell中的空列表

[英]Patternmatching for empty List in Haskell

因为我是Haskell的新手,所以我对一切都不太熟悉。 我试图使用模式匹配实现一个函数,但这不会起作用,因为它给出了以下异常:Prelude.head空列表。 这是代码示例:

swapListToTowers::[[Bool]]->[[Bool]]
swapListToTowers [] = []
swapListToTowers xs = [head x| x <-xs]:swapListToTowers (cutOfFirstElements xs)


cutOfFirstElements::[[Bool]]->[[Bool]]
cutOfFirstElements [] = []
cutOfFirstElements xs = [tail x | x <- xs]

我认为捕获空列表的情况不太有效,是吗? 在此先感谢您的帮助!

这两个函数都作为列表的参数列表。 空列表匹配[]仅匹配外部列表,但不匹配外部列表非空,但内部列表不是; 例如[[]]

我认为你错过了一个匹配你的内部列表的模式,所以当你进入列表理解时,没有检查你的内部列表是否为空

我不确定你的功能是做什么的,但你可能想要将你的功能分开这样,这样你就可以自己处理空的子列表了

swapListToTowers::[[Bool]]->[[Bool]]
swapListToTowers [] = []
swapListToTowers xs = swapListToTowersInner (head xs) : ...

swapListToTowersInner :: [Bool] -> [Bool]
swapListToTowersInner [] = []
swapListToTowersInner xs = head xs

... similarly here for cutOfFirstElements

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM