#6022: GHC infers over-general types ---------------------------------+------------------------------------------ Reporter: simonpj | Owner: Type: bug | Status: new Priority: high | Milestone: 7.6.2 Component: Compiler | Version: 7.4.1 Keywords: | Os: Unknown/Multiple Architecture: Unknown/Multiple | Failure: None/Unknown Difficulty: Unknown | Testcase: Blockedby: | Blocking: Related: | ---------------------------------+------------------------------------------
Comment(by carter): While this is likely wrong code, it is perfectly reasonable to have vector function num instances! (its not overly general, its just not pedagogically helpful for new people starting in haskell) eg given Num a , the instance Num (Vector a -> a), has a perfectly natural (and useful) definition. and thus a Num instance for [a]-> a is reasonable too! however, maybe an alternative approach would be add a suppressable warning for when a type class constraint is used which has no known instances? here are example "similar ways" to write the same function, and their respective types, in ghci 7.6.1 Prelude> let g x = (+) x $ head Prelude> :t g g :: Num ([a] -> a) => ([a] -> a) -> [a] -> a Prelude> let h x y = x + head y Prelude> :t h h :: Num a => a -> [a] -> a Prelude> let q x = (x +) . head Prelude> :t q q :: Num c => c -> [c] -> c so it seems that the core of the issue in the case of the bad example in this ticket is a syntactical one of making the intended composition. Likewise, I think this isn't a bug, the type checker is giving a type that the user can look at and see is "wrong" for their code! i think rejecting code with that Num instance constraint would be bad. Unless someone has a counter point, I think this issue should be closed. -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/6022#comment:2> 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