using composition with multiple argument functions
Dean Herington
heringto@cs.unc.edu
Sat, 2 Feb 2002 20:42:52 -0500 (EST)
On Fri, 1 Feb 2002, Ashley Yakeley wrote:
> At 2002-02-01 10:45, Dean Herington wrote:
>
> >h1 :: (a -> a -> (a,a)) -> (a -> a -> (a,a)) -> (a -> a -> (a,a))
> >h1 = f1 # g1
>
> I think you mean:
>
> h1 :: (a -> a -> (a,a)) -> (a -> a -> (a,a)) -> (a -> a -> (a,a))
> h1 f g = f # g
Actually, I botched the type declaration. I meant:
> h1 :: a -> a -> (a,a)
> h1 = f1 # g1
But your suggestion, which compiles without complaint, gives me an inkling
why the above doesn't work. With `h1 f g = f # g` and the type
declaration for h1, the compiler sees that f1 and g1 must be used at the
same type. With `h1 = f1 # g1`, that connection is missing. So I guess
my `Composable` class example can't work in general.
Dean