2017-05-24 1 views
0

J'ai une fonction d'ordre supérieur: disons pour simplifierarguments Inverser l'ordre en fonction cari (Ramda js)

const divideLeftToRight = x => y => x/y; 

Je voudrais avoir une fonction qui effectue la division, mais de « droite à gauche ». En d'autres termes, je dois avoir:

const divideRightToLeft = x => y => y/x; 

Je pensais à faire:

const divideRightToLeft = R.curry((x,y) => divideLeftToRight(y)(x));

Je me demande s'il y a une façon plus élégante de le faire

Répondre

2

Vous êtes à la recherche pour le flip function:

const divideRightToLeft = R.flip(divideLeftToRight) 
+0

Le flip ne fonctionne pas avec ma fonction d'ordre supérieur (à moins de tweeking peut-être). http://ramdajs.com/repl/#?const%20divideLeftToRight%20%3D%20x%20%3D%3E%20y%20%3D%3E%20x%2Fy%3B%0A%0A%0Aconst% 20divideRightToLeft% 20% 3D% 20R.flip% 28divideLeftToRight% 29% 0A% 0AdivideRightToLeft% 282% 29% 2833% 29 si ma fonction était: const divideLeftToRight = (x, y) => x/y; alors le retournement des arguments fonctionnerait – tcoder01

+0

Est-ce que 'flip' fonctionne avec les fonctions carri'erees par ramda elle-meme (pas par les fonctions fl'eches imbriquées)? – Bergi

+0

@Bergi: pas exactement. Il retourne les deux premiers arguments de n'importe quelle fonction (arité 2+). Cela fonctionnerait bien avec '(x, y) => x/y'. Ou, alternativement, on pourrait utiliser 'flip' avec' uncurryN'. Mais il ne sait pas quoi faire avec une fonction arity-1. –