4 ms·
Hi leshow, can you be more concrete? If I have a record `data Foo = Foo {fooA :: Text, fooB :: Text}` then I must write a method `show :: Foo -> Text` for i
by cassowary 10y ago
Hi leshow, can you be more concrete? If I have a record
`data Foo = Foo {fooA :: Text, fooB :: Text}`
then I must write a method `show :: Foo -> Text` for it. It is immaterial if I write
`instance Show Foo where`
` show foo = (... implementation ...)`
or
`shooFoo foo = (... implementation..)`
I save no code with typeclasses (at this point at least). (I do save code with the magic "deriving", but that's not part of the typesystem; it's just the compiler implicitly generating a bit of code for me.)
Likewise, map operations, fold. They need to be written and used.
I'm sceptical of Elm's claim that typeclasses aren't useful, but your post doesn't show what it sets out to, because it lacks concreteness.
Out of your post, it is only when you get to function composition that typeclasses can theoretically help — but the question isn't, can they theoretically help, it's do the help in practice.
So can you show some example? To meet the challenge and provide convincing evidence that a language without typeclasses is lacking, you would need to say "This is what the code is. And this is what it could be with typeclasses". Unless you do that, Noredink's claim that their code wouldn't be simplified with typeclasses stands.
I do not think you are obliged to do this. It is perfectly legitimate for you to ignore my message. But I think both sides can agree that this is what would be convincing to the anti-typeclassists.
- marcosdumay 10y ago!? Of course you save no code on definitions. Some may even get more verbose. You save code on usage, because you can use generic functions that will work for any instance of Show, instead of specifying them for every type.