[Haskell-beginners] apply a function to all params of another function

Julian Birch julian.birch at gmail.com
Tue May 27 18:39:46 UTC 2014


Just a thought, you might want to use functions like (a,a,a)->a instead.

J

On Monday, May 26, 2014, Brent Yorgey <byorgey at seas.upenn.edu> wrote:

> On Mon, May 26, 2014 at 04:46:29PM +0200, Kees Bleijenberg wrote:
> > In have a lot of functions in a program with params that are alle Int's.
> > f :: Int -> Int -> Int
> > g :: Int -> Int -> Int
> > h :: Int -> Int -> Int -> Int
> > ...
> > and convertParam :: Int -> Int -- say (+1)
> > I want to call functions like f, g and h, but apply convertParam to all
> > params first.
> > f2 a b c = f (convertParam a) (convertParam b) (convertParam c)
> >
> > I tried:
> > run1p f  conv = \a  -> f (conv a)                     -- for functions
> with one
> > param
> > run2p f  conv = \a b ->  f (conv a) (conv b)  -- for functions with two
> > params
> > .
> > Can you do this in a more generalized way (using currying?)
> > Any ideas?
>
> class Convertible t where
>   convert :: t -> t
>
> instance Convertible Int where
>   ...
>
> instance Convertible t => Convertible (Int -> t) where
>   ...
>
> I'll let you fill in the ... ! =) Note this only works well because
> the base case is Int.  You could also add some extra base cases for
> other concrete return types.  However, it is quite difficult to give a
> Convertible instance which applies to "all types which are not
> functions", so this will only work if you are willing to make one
> instance for each concrete result type your functions use.
>
> -Brent
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org <javascript:;>
> http://www.haskell.org/mailman/listinfo/beginners
>


-- 
Sent from an iPhone, please excuse brevity and typos.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20140527/a46c458e/attachment.html>


More information about the Beginners mailing list