2017-05-24 15 views
0

私は高階関数を持っている:私は除算を実行しますが、「左から右」から機能を持ちたいのは、シンプルリバース引数の順序(RAMDAのJS)

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

のために言ってみましょう。言い換えれば、私が持っている必要があります。

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

私がやって考えた:私はそれを

答えて

2

を行うにはよりエレガントな方法がある場合は、探している疑問に思って

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

flip functionの場合:

const divideRightToLeft = R.flip(divideLeftToRight) 
+0

私の高次関数では動作しません(たぶんつまらないかもしれない)。 http://ramdajs.com/repl/#?const%20divideLeftToRight%20%3D%20x%20%3D%3E%20y%20%3D%3E%20x%2Fy%3B%0A%0A%0Aconst%私の関数が: const divideLeftToRight =(x、y)=> x/y;である場合、012ディザイド右上の左上の%20%右の%20R.flip%28divideLeftToRight%29%0A%0AdivideRightToLeft%282%29%2833%29 ; 引数の反転は動作します – tcoder01

+0

'flip'はramda自身がカレートした関数(ネストした矢印関数ではない)で動作しますか? – Bergi

+0

@Bergi:正確ではありません。これは、任意の(arity 2+)関数の最初の2つの引数を反転します。 '(x、y)=> x/y'でうまくいくでしょう。あるいは、代わりに 'uncurryN'と' flip'を使うこともできます。しかし、arity-1関数をどうするかはわかりません。 –