
26 Sep
2007
26 Sep
'07
9:40 a.m.
On Tue, 25 Sep 2007, Brian Hulley wrote:
Of course the problem disappears if you just discard multiple clause syntax and use:
(list :: a List) (f :: a -> b) map :: b List = case list of Empty -> Empty h t PushF -> (h f) (t f map) PushF
This would also have the advantage, that there is a name assigned to each parameter, which is nice for documentation purposes. However we would also have to assign a name to the parameter of 'f', and the (->) type constructor becomes somehow special, at least more special than it is now. Curried functions like f :: a -> b -> c suggest a swapped order of arguments for (->), since 'f' must be called this way b a f Maybe it should be f :: c <- b <- a