As you can see with SAM, a function is used for specific roles, so is a type, and in a specific order. Programming languages don't seem to be that prescriptive. WIth any programming language, it take experience, codified as patterns, to converge towards an efficient programming model. Elm seems to be departing from that tradition. In a way that's what's interesting about it.