
#13509: Perplexing type error -------------------------------------+------------------------------------- Reporter: bgamari | Owner: (none) Type: bug | Status: new Priority: high | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): The function in question is, {{{#!hs selectPower :: Word# -> (# Word#, Word# #) selectPower 2## = (# 63##, 9223372036854775808## #) selectPower base = go base where go :: Word# -> (# Word#, Word# #) go pw = case timesWord2# pw pw of (# 0##, pw2 #) -> let (# n, pw2n #) = go pw2 in case timesWord2# pw pw2n of (# 0##, pw2n1 #) -> (#n `timesWord#` 2## `plusWord#` 1##, pw2n1 #) _ -> (# n `timesWord#` 2##, pw2n #) _ -> (# 1##, pw #) }}} Adding a type signature, `go :: Word# -> (# Word#, Word# #)`, appears to allow compilation to proceed. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13509#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler