Javascript 我应该将什么值传递给sactionary.other()?

Javascript 我应该将什么值传递给sactionary.other()?,javascript,functional-programming,sanctuary,Javascript,Functional Programming,Sanctuary,我正在尝试运行以下示例。它使用sactionary.js const {create, env} = require('sanctuary'); const S = create({checkTypes: false, env: env}); const test = require('tape'); class Person { constructor(name){ this.name = S.maybeToEither('')(S.toMaybe(name)); } };

我正在尝试运行以下示例。它使用sactionary.js

const {create, env} = require('sanctuary');
const S = create({checkTypes: false, env: env});
const test = require('tape');

class Person {
  constructor(name){
    this.name = S.maybeToEither('')(S.toMaybe(name));
  }
};

const capitalize = (string) => string[0].toUpperCase() + string.substring(1);
const tigerify = (string) => `${string}, the tiger`;
const display = (string) => string.toString();

const tigerize = S.compose(capitalize)(tigerify);

test("Displaying a person", (assert) => {
  const personOne = new Person("tony");
  const actual = S.either(S.identity)(tigerize)(personOne.name);
  const expected = 'Tony, the tiger';

  assert.equal(actual, expected);
  assert.end();
});

test("Displaying an anonymous person", (assert) => {
  const personTwo = new Person(null);
  const actual = S.either(S.identity)(tigerize)(personTwo.name);
  const expected = '';

  assert.equal(actual, expected);
  assert.end();
});
第28行字符48出现以下错误:

TypeError: (intermediate value)(intermediate value)(intermediate value) is not a function
这是由以下行中的
personTwo.name
引起的:

const actual = S.either(S.identity)(tigerize)(personTwo.name);

我可以看到personTwo.name是一个
左边的
。为什么这会触发一个错误而不是返回一个空字符串?

看起来我使用了一个过时的api


通过将
S.identity
更改为
S.I
,示例成功了。

我认为
S.identity
从未存在过。也许您曾经使用过
R.identity
。我很高兴你发现了问题所在。顺便说一下,
capitalize
是一种书面形式。考虑<代码> S.Read(/^ ./c= C.TouPulcAe())< /Cult>,该代码适用于<代码> '/COD>。