
#11439: Request for comments: Allow duplicate type signatures -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by goldfire): I do think something like this would be useful. But recall that type signatures and function definitions need not be next to each other. And I'm very suspicious of a proposal that cares about top-to-bottom ordering of definitions (nowhere else in Haskell is that done). On the other hand, this is a good idea for a pragma. Perhaps {{{ foo :: a -> a foo x = x {-# TYPECHECK foo :: Bool -> Bool foo :: Int -> Int foo :: Maybe a -> Maybe a foo True :: Bool map id [] #-} }}} The idea here is that the `TYPECHECK` pragma allows to you list a bunch of expressions. GHC checks that the expressions are well-typed. If one isn't, an error is issued. You could imagine Haddock looking for examples where the expression is a type signature for a bare variable and then using the types as extra documentation for that variable. While we're at it, I'd also love {{{ {-# ILL_TYPED map True False - 'x' #-} }}} If an expression in `ILL_TYPED` is actually well-typed, an error is issued. This would be very useful in putting in unit tests for fancy type- level features. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11439#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler