Search code examples
haskellhaskell-platform

Using as-patterns not binding to the full List in Haskell


Ok, maybe the title is a little confusing, but what I am trying to do is have a function like this: f (a:b:c:d:is) = ... but be able to refer to a:b:c:d without writing it again. As it turns out, I can't do something like e@(a:b:c:d):is and get the expected result. Any ideas?


Solution

  • The best I can think of is using view patterns, like this:

    {-# LANGUAGE ViewPatterns #-}
    f (splitAt 4 -> (as@[a,b,c,d], is)) = is ++ [d,c,b,a] ++ as