Javascript 我如何用ramda编写该函数?

Javascript 我如何用ramda编写该函数?,javascript,functional-programming,ramda.js,Javascript,Functional Programming,Ramda.js,如何以ramda的方式创建addGreeting函数 我试图创建一个函数,但它认为这不是最好的解决方案 const animal = {}; const addName = R.assoc('name'); const addGreeting = (transformString) => (animal) => { return R.assoc('greeting', transformString(animal), animal); }; const createAnim

如何以ramda的方式创建addGreeting函数

我试图创建一个函数,但它认为这不是最好的解决方案

const animal = {};

const addName = R.assoc('name');

const addGreeting = (transformString) => (animal) => {
  return R.assoc('greeting', transformString(animal), animal);
};

const createAnimal = 
 R.pipe(
   addName('Igor'),
   addGreeting(animal => `Hello ${animal.name}`),
 );

createAnimal(animal);

我希望用ramda编写addGreeting函数


UPD:我的解决方案

const addName = R.assoc('name');

const addGreeting = 
  (transformString) => 
    R.converge(
      R.merge,
      [
        R.applySpec({
          greeting: transformString
        }),
        R.defaultTo({})
      ]
    )

const createAnimal = 
 R.pipe(
   addName('Igor'),
   addGreeting(animal => `Hello ${animal.name}`),
 );

createAnimal({});


您可以使用
R.curry
创建
addGreeting
R.applySpec
创建动物创建功能:

const{curry,applySpec,identity}=R
const addGreeting=curry((transformString,name)=>transformString(name));
const createAnimal=applySpec({
姓名:identity,,
问候语:addGreeting(name=>`Hello${name}`)
})
console.log(createAnimal('Igor'))