
On Sun, Dec 2, 2012 at 5:31 AM, Christopher Howard < christopher.howard@frigidcode.com> wrote:
But I have a compulsive hatred of duplication.
And thus haskell code golfing is born! Actually that's not always true. The motivation is sometimes compellingly noble. E.g. we want a faithfully compact translation of (English!) "Given some number compute both its sine and cosine, both scaled by velocityC." into import Control.Arrow( (***), (&&&) ) import Control.Monad( join ) f = join (***) (velocityC*) . (sin &&& cos) Unfamiliarity with symbol-rich combinators has been known to exact cognitive pain, leading to unfortunate comparisons with Perl. Evidently, the story isn't always driven by sadism. Credits: I asked a similar question years ago [1] and got a heap of useful replies. Special mention to Robert Vollmert and Luke Palmer for help arriving at the above version. [1] http://www.haskell.org/pipermail/haskell-cafe/2009-February/056195.html -- Kim-Ee On Sun, Dec 2, 2012 at 5:31 AM, Christopher Howard < christopher.howard@frigidcode.com> wrote:
Can application of an expression (to a function) be treated like a function itself? In my specific case, I started with this expression:
code: -------- (cos b * velocityC, sin b * velocityC) --------
But I have a compulsive hatred of duplication. I happened to have this function handy called appPair:
code: ------- appPair f (a, b) = (f a, f b)
appPair (* velocityC) (cos b, sin b) -------
Better, but the b identifier is still duplicated. Is there some way I could have...
code: -------- appPair (?) (cos, sin) --------
...shifting the application of b into the (* velocityC) expression, without modifying my appPair function?
-- frigidcode.com
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners