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