[英]Haskell “otherwise” pattern match?
我有以下代码:
swapInPairs :: [a] -> [a]
swapInPairs [] = []
swapInPairs [x] = [x]
swapInPairs (x:y:ys) = y : x : swapInPairs ys
有什么办法可以做
swapInPairs :: [a] -> [a]
swapInPairs (x:y:ys) = y : x : swapInPairs ys
otherwise = id
我知道这并不是什么大不了的事,只摆脱了一行代码,但是我很好奇模式匹配是否存在这样的东西,因为后卫有“否则”的感觉。
模式匹配通常是顺序应用的。
因此,如果您在使用更具体的模式后拥有一个“包罗万象”的版本,则会首先匹配更具体的模式,并且如果不可能,那么“包罗万象”将完成它的工作。
所以你可以做
swapInPairs :: [a] -> [a]
swapInPairs (x:y:ys) = y : x : swapInPairs ys
swapInPairs x = x
原来模式匹配中的顺序很重要,我不知道:
swapInPairs :: [a] -> [a]
swapInPairs (x:y:ys) = y : x : swapInPairs ys
swapInPairs x = x
作品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.