Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

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. <details><summary>Trac metadata</summary> | 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 | | </details> <!-- {"blocked_by":[],"summary":"Implement mutually recursive view patterns","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.13","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"FeatureRequest","description":"I got bit by the fact that mutually recursive view patterns don't work when writing code a bit like this:\r\n\r\n{{{\r\n{-# LANGUAGE ViewPatterns #-}\r\nmodule RecursiveViewPatterns where\r\n\r\n-- Doesn't work: \"Not in scope: 'foo'\"\r\n(foo, unzip -> (bars, bazs)) = undefined\r\n(spqr, ($ foo) -> metavariable) = undefined\r\n\r\n-- Works fine:\r\n-- (foo, unzip -> (bars, bazs)) = undefined\r\n-- (spqr, mk_metavariable) = undefined\r\n-- metavariable = mk_metavariable foo\r\n}}}\r\n\r\n(I've started using view patterns very aggressively to eliminate almost every linearly-used binding in my programs!)\r\n\r\nI 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.","type_of_failure":"OtherFailure","blocking":[]} -->
issue