[Haskell-cafe] Status of TypeDirectedNameResolution proposal?

Roman Leshchinskiy rl at cse.unsw.edu.au
Tue Nov 17 23:59:51 EST 2009


Simon, have you given any thought to how this interacts with type system extensions, in particular with GADTs and type families? The proposal relies on being able to "find the type" of a term but it's not entirely clear to me what that means. Here is an example:

foo :: F Int -> Int
foo :: Int -> Int

bar1 :: Int -> Int
bar1 = foo

bar2 :: Int ~ F Int => Int -> Int
bar2 = foo

IIUC, bar1 is ok but bar2 isn't. Do we realy want to have such a strong dependency between name lookup and type inference? Can name lookup be specified properly without also having to specify the entire inference algorithm?

Another example: suppose we have

data T a where
  TInt  :: T Int
  TBool :: T Bool

foo :: T Int -> u
foo :: T Bool -> u

bar :: T a -> u
bar x = case x of
	  TInt  -> foo x
	  TBool -> foo x

Here, (foo x) calls different functions in the two alternatives, right? To be honest, that's not something I'd like to see in Haskell.

Roman




More information about the Haskell-Cafe mailing list