Re: Haskell-prime Digest, Vol 2, Issue 6

From: Henrik Nilsson
Subject: Re: MPTCs and functional dependencies Simon PJ wrote:
Multi-parameter type classes, yes. Functional dependencies, no.
My experience is that even with very simple applications of MPTCs, I often end up needing functional dependencies to make things work.
Thus, if my hunch is right, and other people have a similar experience, my fear would be that omitting FDs or something similar would result in a Haskell' standard that ends up being out of date even before it is finalised, in that a large number of real world applications and libraries would fail to be standard compliant and could not easily be adapted to be.
I second that. For example, my survey showed that the monadic combinators in Control.Monad.* are quite heavily used. These libraries define three two-parameter classes (MonadError, MonadReader, and MonadWriter). ALL of them use functional dependencies. I remember trying to program this kind of library before the days of FDs--the result was worthless, because of all the ambiguities I got whenever I tried to use it. Adding MPTCs without *some* form of FDs (and I'm including the associated types stuff there) would guarantee a broken language from the start. I agree this needs work--in my view, some of the most important work to be done in defining Haskell'. We need something simple enough to standardize, which is at the same time powerful enough to handle the applications we already have. We didn't dare include MPTCs in Haskell 98 because the number one goal on that occasion was to be conservative! But if we had taken that view when Haskell was first designed, classes would never have seen the light of day at all. I think now is the time to bite this bullet. John
participants (1)
-
John Hughes