Re: [GHC] #963: monadic Num instance not found in ghci

2006-11-01 Thread GHC
#963: monadic Num instance not found in ghci
--+-
 Reporter:  [EMAIL PROTECTED]  |  Owner: 
 Type:  bug   | Status:  closed 
 Priority:  normal|  Milestone: 
Component:  GHCi  |Version:  6.6
 Severity:  normal| Resolution:  fixed  
 Keywords:| Difficulty:  Unknown
 Testcase:  tc217 |   Architecture:  x86
   Os:  Linux |  
--+-
Changes (by simonpj):

  * resolution:  = fixed
  * testcase:  = tc217
  * status:  new = closed

Comment:

 This bug is the same as #179.

 I've finally fixed it.  The patch should work fine on the 6.6 branch.

 Simon

-- 
Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/963
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


[GHC] #963: monadic Num instance not found in ghci

2006-10-24 Thread GHC
#963: monadic Num instance not found in ghci
-+--
Reporter:  [EMAIL PROTECTED]  |   Owner:   
Type:  bug   |  Status:  new  
Priority:  normal|   Milestone:   
   Component:  GHCi  | Version:  6.6  
Severity:  normal|Keywords:   
  Difficulty:  Unknown   |Testcase:   
Architecture:  x86   |  Os:  Linux
-+--
Here's my code (fun.hs):
 {{{
 {-# OPTIONS_GHC -fglasgow-exts -fallow-undecidable-instances #-}

 import Control.Monad.Reader

 instance Eq (a - b) where
 _ == _ = error whoops

 instance Show (a - b) where
 show = const fun

 instance (Num a, Monad m, Eq (m a), Show (m a)) = Num (m a) where
 fromInteger = return . fromInteger
 abs = liftM abs
 signum = liftM signum
 (+) = liftM2 (+)
 (*) = liftM2 (*)
 (-) = liftM2 (-)

 instance (Fractional a, Monad m, Num (m a)) = Fractional (m a) where
 fromRational = return . fromRational
 (/) = liftM2 (/)

 instance (Floating a, Monad m, Fractional (m a)) = Floating (m a) where
 pi = return pi
 exp = liftM exp
 log = liftM log
 sin = liftM sin
 cos = liftM cos
 tan = liftM tan
 sinh = liftM sinh
 cosh = liftM cosh
 tanh = liftM tanh
 asin = liftM sin
 acos = liftM cos
 atan = liftM tan
 asinh = liftM sinh
 acosh = liftM cosh
 atanh = liftM tanh

 }}}

 Test session:
 {{{
 $ ghci fun.hs
___ ___ _
   / _ \ /\  /\/ __(_)
  / /_\// /_/ / /  | |  GHC Interactive, version 6.6, for Haskell 98.
 / /_\\/ __  / /___| |  http://www.haskell.org/ghc/
 \/\/ /_/\/|_|  Type :? for help.

 Loading package base ... linking ... done.
 [1 of 1] Compiling Main ( fun.hs, interpreted )
 Ok, modules loaded: Main.
 *Main 1 2

 interactive:1:0:
 No instance for (Num (t1 - t))
   arising from the literal `1' at interactive:1:0-2
 Possible fix: add an instance declaration for (Num (t1 - t))
 In the expression: 1 2
 In the definition of `it': it = 1 2
 }}}

 Expected result:
 {{{
 Loading package mtl-1.0 ... linking ... done.
 1
 }}}

 This used to work in ghci-6.4. What's also weird is that manually lifting
 one number seems to help:
 {{{
 *Main (1 + 2) undefined

 interactive:1:1:
 No instance for (Num (a - t))
   arising from the literal `1' at interactive:1:1
 Possible fix: add an instance declaration for (Num (a - t))
 In the first argument of `(+)', namely `1'
 In the expression: (1 + 2) undefined
 In the definition of `it': it = (1 + 2) undefined
 *Main (1 + const 2) undefined
 3
 }}}

-- 
Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/963
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