So, I have a function apply :: proxy tf -> tf Int -> tf Int , which uses a proxy server to transfer the type family, and applies Int to this type to determine the type of the second argument and return value. However, I get some confusing answers from the GHC.
{-
test1 refuses to compile with GHC, spitting out this error:
tftest.hs:16:9: Couldn't match expected type '()' with actual type 'F Int' In the expression: apply f () In an equation for 'test1': test1 = apply f () tftest.hs:16:17: Couldn't match expected type 'F Int' with actual type '()' In the second argument of 'apply', namely '()' In the expression: apply f ()
Vaguely commenting on test1 and using the let binding in test2 makes GHC happy and everything compiles fine. Can anyone explain what is going on here?
polymorphism haskell type-families
Nick Vladimiroff
source share