2017-10-04 76 views
0

我不能使用Ramda中可用的函數找出f(x)(g(x))的變換。我希望在R.something(f, g)(x)的理想情況下 - 只要x只出現一次,並且是最後一個參數。使用Ramda的形式f(x)(g(x))的函數組合

f是採取x返回功能

g是一個函數採取x返回一個值

我試過pipecomposechain功能,但TBH我猜很辛苦並沒有一個人工作。我最近問了一個類似的問題,我很想知道如果存在一個有用身份的資源,所以我不需要繼續問這麼:)

+1

順便說一句,如果你認爲'恆= X => Y => x'這是一個適用函子。 – ftor

回答

2

chain已關閉:它的功能是chain(f, g)(x) == f(g(x))(x)。所以,你只需要傳遞到chain前翻轉f

R.chain(R.flip(f), g)(x) 

const something = R.compose(R.chain, R.flip) 
something(f, g)(x) 
+0

我剛剛意識到這一點!謝謝 – RichK

+0

我們稱之爲'ap'。 – ftor

+0

@ftor哦。我意識到'R.chain'是Haskell的'= <<',但是考慮到所有東西都翻轉過來了,我認爲沒有等同於'(= <<)。 flip'。你肯定應該發佈[that](http://ramdajs.com/docs/#ap)作爲答案。 – Bergi

相關問題