Ticket #3304: gcd_0_0_haskell2010.patch

File gcd_0_0_haskell2010.patch, 1.1 KB (added by daniel.is.fischer, 3 years ago)

Patch for the haskell2010 library

  • Prelude.hs

    commit b9e6c5cba6366dafd8b05be722a4df814bd80f5f
    Author: Daniel Fischer <daniel.is.fischer@googlemail.com>
    Date:   Tue May 17 23:04:35 2011 +0200
    
        Add old behaviour of gcd
        
        The behaviour of gcd was changed to "gcd 0 0 = 0", here we must keep
        the haskell2010 behaviour and raise an error.
    
    diff --git a/Prelude.hs b/Prelude.hs
    index 38cb3b4..9be6ccf 100644
    a b import GHC.Base 
    150150import Text.Read 
    151151import GHC.Enum 
    152152import GHC.Num 
    153 import GHC.Real 
     153import GHC.Real hiding ( gcd ) 
     154import qualified GHC.Real ( gcd ) 
    154155import GHC.Float 
    155156import GHC.Show 
    156157import GHC.Err   ( undefined ) 
    seq _ y = y 
    206207catch :: IO a -> (IOError -> IO a) -> IO a 
    207208catch = New.catch 
    208209 
     210#ifdef __GLASGOW_HASKELL__ 
     211-- | @'gcd' x y@ is the greatest (positive) integer that divides both @x@ 
     212-- and @y@; for example @'gcd' (-3) 6@ = @3@, @'gcd' (-3) (-6)@ = @3@, 
     213-- @'gcd' 0 4@ = @4@.  @'gcd' 0 0@ raises a runtime error. 
     214gcd             :: (Integral a) => a -> a -> a 
     215gcd 0 0         =  error "Prelude.gcd: gcd 0 0 is undefined" 
     216gcd x y         = GHC.Real.gcd x y 
     217#endif 
     218