An exploration of generic/polytypic programming in Scala