简体   繁体   English

是否可以使用没有案例的防护装置重写此 Haskell function?

[英]Is it possible to rewrite this Haskell function using guards with no case-of?

I have this Haskell function that uses "case of", but I am trying to figure out if it's possible to rewrite this function using guards("|") and not "case of".我有这个使用“case of”的 Haskell function,但我想弄清楚是否有可能重写这个 function 使用警卫(“”)而不是“” Is it possible?可能吗? Any suggestion would be helpful.任何建议都会有所帮助。

lefQ :: Ord a => LOL a -> Lang a -> Lang a
lefQ (LOL i xs) [] = []
lefQ (LOL i xs) (LOL j y:ys) = case stripPrefix xs y of
                    Nothing -> leftq (LOL i xs) ys
                    Just zs -> (LOL (j-i) zs):lefQ (LOL i xs) ys

You can work with a pattern guard , so:您可以使用模式保护,因此:

lefQ :: Ord a => LOL a -> Lang a -> Lang a
lefQ (LOL i xs) [] = []
lefQ (LOL i xs) (LOL j y:ys)
    | Just zs <- stripPrefix xs y = (LOL (j-i) zs): lefQ (LOL i xs) ys
    | otherwise = leftq (LOL i xs) ys

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

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