class Test t where
polymorph
:: Test t
=> t
-> IO ()
--
data Foo = Foo
data Bar = Bar
instance Test Foo where
test _ = "foo"
instance Test Bar where
test _ = "bar"
main = do
polymorph Foo
polymorph Bar
Y2xhc3MgVGVzdCB0IHdoZXJlCgl0ZXN0IDo6IHQgLT4gU3RyaW5nCgpwb2x5bW9ycGggOjogVGVzdCB0ID0+IHQgLT4gSU8gKCkKcG9seW1vcnBoID0gcHV0U3RyTG4gLiB0ZXN0CgotLQoKZGF0YSBGb28gPSBGb28KZGF0YSBCYXIgPSBCYXIKCmluc3RhbmNlIFRlc3QgRm9vIHdoZXJlCgl0ZXN0IF8gPSAiZm9vIgoKaW5zdGFuY2UgVGVzdCBCYXIgd2hlcmUKCXRlc3QgXyA9ICJiYXIiCgptYWluID0gZG8KCXBvbHltb3JwaCBGb28KCXBvbHltb3JwaCBCYXIK