[GHC] #10924: Template variable unbound in rewrite rule
GHC
ghc-devs at haskell.org
Sun Oct 4 04:04:49 UTC 2015
#10924: Template variable unbound in rewrite rule
-------------------------------------+-------------------------------------
Reporter: crockeea | Owner:
Type: bug | Status: new
Priority: normal | Milestone: 7.10.3
Component: Compiler | Version: 7.10.2
Resolution: | Keywords: singletons,
| templatehaskell
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
crash | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
-------------------------------------+-------------------------------------
Comment (by crockeea):
I did figure out a workaround: don't use "as-patterns" at all.
The following definition of `ppMul` compiles:
{{{
ppMul :: PrimePower -> [PrimePower] -> [PrimePower]
ppMul x [] = [x]
ppMul (PP(p,e)) (PP (p',e'):pps')
| p == p' = PP(p,e Num.+ e'):pps'
| p <<= p' = (PP(p,e)):(PP (p',e'):pps')
| otherwise = (PP(p',e')):ppMul (PP(p,e)) pps'
}}}
Since the point of using singletons is to get type-level functions, it's
not clear that there is any performance overhead (except perhaps in the
compiler) by rebuilding `PP(p,e)` and `PP(p,e')`, but it would be nice to
be able to write this in a more idiomatic manner.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10924#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list