#7135: Data.Bits can still have default implementations for testBit, bit, and
popCount by using -XDefaultSignatures
------------------------------+---------------------------------------------
 Reporter:  joeyadams         |          Owner:                  
     Type:  feature request   |         Status:  new             
 Priority:  normal            |      Component:  Runtime System  
  Version:                    |       Keywords:                  
       Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
  Failure:  None/Unknown      |       Testcase:                  
Blockedby:                    |       Blocking:                  
  Related:                    |  
------------------------------+---------------------------------------------
 In commit f99cee0 of the base package, the Num constraint was removed from
 the Bits class.  Because the default implementations of testBit, bit, and
 popCount required Num, the same commit made them external functions
 instead.

 We can still have default implementations for these if we use the
 -XDefaultSignatures GHC extension:

 {{{
 #ifdef __GLASGOW_HASKELL__
     default bit :: Num a => Int -> a
     bit = bitDefault

     default testBit :: Num a => a -> Int -> Bool
     testBit = testBitDefault

     default popCount :: Num a => a -> Int
     popCount = popCountDefault
 #endif
 }}}

 Whether we want to do this or not, I'm not sure.

 Pro:

  * This is more convenient.

  * This may prevent people from encountering runtime errors in existing
 code that does not have bit, testBit, and popCount implementations, where
 the author forgot to compile with -Wall .

 Con:

  * Users get away with writing less portable code, so those who do wish to
 use non-GHC will have more support work to do.

 The attached patch adds defaults for testBit, bit, and popCount, for GHC
 only.  It does not update the documentation, though, so "Minimal complete
 definition" as-is would be misleading.

 P.S.: This ticket is for GHC 7.6.1-rc1.  That version tag is not
 available, though.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7135>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to