20 Nov
2004
20 Nov
'04
1:36 a.m.
If the inference is unique, then of course, we _can_ infer that the empty list can only be projected onto the empty list. However any non-empty list can be projected in several ways. How do we infer this ambiguous result? Either we have to specify which projection result we want, and the typechecker will tell us if that is possible. Or we obtain the powerset of a list -- and then enumerate it.
But is there no way things could be changed so we can write (to use an example without projection to HNil): *> hProject (hProject (hCons hZero hNil)) :: HCons HZero HNil