kirancodes.me
To Proof Maintenance & Beyond!

Do we need dependent types?

Daniel Fridlender, Mia Indrika

Abstract

This pearl is about some functions whose definitions seem to require a language with dependent types. We describe a technique for defining them in Haskell or ML, which are languages without dependent types. Consider, for example, the scheme defining zipWith in figure 1. When this scheme is instantiated with n equal to 1 we obtain the standard function map . In practice, other instances of the scheme are often useful as well. Figure 1 cannot be used as a definition of a function in Haskell because of the ellipses ‘...’. More importantly, the type of zipWith is parameterized by n , which seems to indicate the need for dependent types. However, as mentioned above, Haskell does not allow dependent types.

DOI 10.1017/s0956796800003658

Related papers