
On Sat, Oct 4, 2008 at 2:58 AM, Corey O'Connor
I recently had a need to use the IsFunction typeclass described by Oleg here: http://okmij.org/ftp/Haskell/isFunction.lhs
and am wondering if the use of the TypeCast class can be correctly replaced by a type equality constraint.
I noticed this as well; it seemed to work in my tests, although I haven't seen any proof that they are equivalent. The HList paper mentions that the behavior of TypeCast is directly related to type equality coercions in System F(C), GHC's core language. So it's not that surprising that it can be replaced with a type-equality constraint, which is a more direct way of introducing the same core-language code. If you want to know for sure, you can look at the output of ghc -ddump-simpl on each program. -- ryan