shapeless (i.e. shape polymorphism and dependent typing in Scala) using Agda