2017-10-04 90 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

相关问题