Thanks to all the people who responded to my question! The solution from Wolfgang Jeltsch:
(f.).g was what I was after. But the other responses were useful also. Thanks! Mark. On Thu, 2003-07-17 at 09:57, Dr Mark H Phillips wrote: > Hi, > > Hopefully this is a simple question. I am wanting to know good ways > of using ".", the function composition operator, when dealing with > currying functions. > > Suppose I have the following functions defined: > > f :: Int -> Int > f x = x*x > > g :: Int -> Int -> Int > g a b = a + b > > If I wish to add 1 and 2 together and then square them I can do: > > f (g 1 2) = 9 > > but what if I wish to use function composition in the process? > > I can't do > > (f.g) 1 2 > > because the 2 doesn't get passed in till too late. > > I could do > > (f.(g 1)) 2 > > or even > > (f.(uncurry g)) (1,2) > > But what I really want is a function with signature Int -> Int -> Int. > The answer is probably: > > (curry (f.(uncurry g))) 1 2 > > but this seems awfully messy just to do f (g 1 2). > > And what if g were a function with three curried arguments? Then > uncurry and curry wouldn't apply. What then? > > Is there a better way? > > Thanks, > > Mark. > > > -- > Dr Mark H Phillips > Research Analyst (Mathematician) > > AUSTRICS - smarter scheduling solutions - www.austrics.com > > Level 2, 50 Pirie Street, Adelaide SA 5000, Australia > Phone +61 8 8226 9850 > Fax +61 8 8231 4821 > Email [EMAIL PROTECTED] > > _______________________________________________ > Haskell mailing list > [EMAIL PROTECTED] > http://www.haskell.org/mailman/listinfo/haskell -- Dr Mark H Phillips Research Analyst (Mathematician) AUSTRICS - smarter scheduling solutions - www.austrics.com Level 2, 50 Pirie Street, Adelaide SA 5000, Australia Phone +61 8 8226 9850 Fax +61 8 8231 4821 Email [EMAIL PROTECTED] _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell