Implement mutually recursive view patterns
I got bit by the fact that mutually recursive view patterns don't work when writing code a bit like this:
{-# LANGUAGE ViewPatterns #-}
module RecursiveViewPatterns where
-- Doesn't work: "Not in scope: 'foo'"
(foo, unzip -> (bars, bazs)) = undefined
(spqr, ($ foo) -> metavariable) = undefined
-- Works fine:
-- (foo, unzip -> (bars, bazs)) = undefined
-- (spqr, mk_metavariable) = undefined
-- metavariable = mk_metavariable foo
(I've started using view patterns very aggressively to eliminate almost every linearly-used binding in my programs!)
I note that the GHC users guide (http://www.haskell.org/ghc/docs/6.12.1/html/users_guide/syntax-extns.html) mentions that this feature is not yet implemented, but the restriction may be lifted in future. Consider this ticket a vote for that change.
Trac metadata
Trac field | Value |
---|---|
Version | 6.13 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |