@dabeaz My experience working with programmers more adept at type hierarchies than I am leads me to feel they are achieving results despite the epistemology rather than because of it. Putting the type structure first in design leads to overly complex and brittle program structure. Let the program come to you, don't force the skill of your abstraction powers onto a problem that won't ultimately benefit from it.