如何解决在 fp-ts 中的任何一个上使用 getApplicativeValidation 后如何通过管道传输 ap 调用?
昨天我和一些同事试图得到一个玩具示例,用于 fp-ts 中的应用验证工作。我们最终通过将每个临时步骤手动存储在变量中并调用下一步来使其工作。但是使用 fp-ts 的管道函数会更优雅。直接使用Either 进行操作,但不会将多个Left 值合并为一个(例如,将数组与字符串错误连接起来)。 但是使用 pipe() ap() 调用需要两个参数,但只得到一个。我们这里如何正确使用管道:
ResponseEntity<PayloadObject> out = restTemplate.exchange("url",HttpMethod.POST,entity,PayloadObject.class);
解决方法
Either.getApplicativeValidation
返回一个 Applicative2C
的实例,它具有类方法的不可管道版本。目前,您获得使用组合器(如 getApplicativeValidation
)计算的可管道版本实例的方法是将实例从 pipeable
模块传递给 pipeable.ts
组合器。
把你的代码改成这样:
const validation = E.getApplicativeValidation(RA.getSemigroup<string>())
const V = pipeable(validation)
const fromPipe = pipe(
validation.of(createCreditCard),V.ap(v1(card.number)),V.ap(v2(card.expiry)),V.ap(v3(card.cvv))
)
你应该会发现它可以如你所愿。
但是,我相信在 fp-ts
v3.x.x 中,默认情况下类型类接口将更改为全部可管道化,因此对 pipeable
的需求将消失。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。