Hello, Can you help me understand how to make something more quantified than just (a -> b) a member of a class? Thanks in advance! ============================================================================== This is a "literate" program and may be saved as "t.lhs" (say) then loaded into Haskell. I am using O'Hugs version 0.5 under Windows 98. We want to make ((Int,Float) -> String) a Show. Try the direct approach: ------------------------------------------- instance Show ((Int,Float) -> String) where showsPrec _ f _ = f (3,5.4) ------------------------------------------- It fails with 'Type variable expected in instance type'. Try defining a type synonym: ------------------------------------------- >type MyF = ((Int,Float) -> String) instance Show MyF where showsPrec _ f _ = f (3,5.4) ------------------------------------------- It fails with 'Type synonym "MyF" not permitted in instance of "Show" '. Try defining a newtype: ------------------------------------------- >newtype MyNewtype = MyDataConstructor ((Int,Float) -> String) >instance Show MyNewtype where > showsPrec _ (MyDataConstructor f) _ = f (3,5.4) >--We never really made MyF a Show, but function "show'" is a workaround. >show' myF = show (MyDataConstructor myF) ------------------------------------------- Testing: ------------------------------------------- >f :: MyF >f x | x == (3,5.4) = "This shows the value of my function applied to a certain argument." > | otherwise = "OK" >test = show' f ------------------------------------------- _______________________________________________ Hugs-Users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/hugs-users
