KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
See code example below. It won't compile. I had thought that maybe it's because it has to have a single type for the first parameter in the test function. But that doesn't make sense because if I don't pattern match on it so it will compile, I can call it with both MyObj11 5 and MyObj21 5 which are two different types. So what is it that restricts so you can't pattern match on constructors with a type class constrained parameter? Or is there some mechanism by which you can? class SomeClass a where toString :: a -> String instance SomeClass MyType1 where toString v = "MyType1" instance SomeClass MyType2 where toString v = "MyType2" data MyType1 = MyObj11 Int | MyObj12 Int Int data MyType2 = MyObj21 Int | MyObj22 Int Int test :: SomeClass a => a -> String test (MyObj11 x) = "11" test (MyObj12 x y) = "12" -- Error here if remove 3rd line: rigid type bound error test (MyObj22 x y) = "22" -- Error here about not match MyType1.
Tags (comma-separated)
Save Edits
Cancel