问题标签 [fp-ts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
322 浏览

typescript - 打字稿函数覆盖高阶函数

我对这段代码感到困惑:

我在fp=ts 回购中找到了这个

我对此感到相当困惑。每个函数的初始签名看起来都一样<A, B>(f: (a: A) => B)

打字稿如何确定哪个是正确的调用?

0 投票
1 回答
2248 浏览

typescript - 来自 fp-ts 和 URI 的打字稿中的更高种类的类型

在 fp-ts 中,他们为更高种类的类型提供了这种解决方法:

它可以像这样使用:

什么是成员_URI,什么是_A

0 投票
1 回答
365 浏览

typescript - Maybe monad 的另一个名字是什么?

我知道在 FP 中,有时会用多个术语来表示一件事。因此,当我开始学习 fp-ts API ( https://github.com/gcanti/fp-ts/blob/master/docs/index.md ) 时,我找不到 Maybe monad。所以也许它还有另一个名字?

0 投票
1 回答
266 浏览

typescript - 我想发明的 FP 的轮子叫什么名字?(见代码)

所需的最终打字稿代码是:

到目前为止我已经写了下面的代码,我感觉我在发明轮子,即这样的东西必须已经在FP中实现了,但我不知道它是如何调用的。谁能告诉可以使用https://gcanti.github.io/fp-ts/中的哪个工具?

0 投票
2 回答
225 浏览

javascript - 函数式编程中的nodejs createReadStream

我想听听您对TaskEither使用fp-ts或其他函数式编程库进行学习的反馈:

  • Promise在处理nodejs流时使用a Promise,以这种方式使用a是一个好的解决方案吗?最直接的选择是什么?
  • 我正在使用.run().then(...).fold您知道使用我的功能的更简洁的方法吗?
  • 相同的代码可以在Either没有 ? 的情况下重写Promise?你能给我一个样品吗?


0 投票
1 回答
678 浏览

typescript - 使用 TypeScript 和 fp-ts 进行类型建模以及使用 Either 时出现错误

我正在尝试使用 TypeScript 并尝试使用fp-ts类型对域逻辑进行建模,但我遇到了这个问题:

编译器对我大喊大叫,因为: Type '(t: MyType) => Either<Error, { id: string; isValid: boolean; }>' is not assignable to type 'Either<Error, CreateMyValidType>'.

如果我删除Either并且我只返回 sum 类型Error | MyValidType就可以了。

它在里面时似乎无法识别正确的类型Either

我找到了通过指定right调用时的类型来避免问题的方法,但我不完全理解其中的含义,所以我不知道这是否是一个坏主意:

处理此问题并使其编译的正确方法是什么?谢谢!

0 投票
1 回答
1471 浏览

typescript - 如何避免 fp-ts 中的嵌套 Monad 或优雅地处理它们?

我有一系列代码需要经过以下步骤(伪代码):

如果我将这些步骤映射/链接在一起,我最终会得到一个TaskEither<IError, Either<IError, TaskEither<IError, IOpenJob>>>显然有点尴尬的类型。

我目前将所有这些扁平化为简单TaskEither<IError, IJobOpenedEvent>类型的解决方案如下所示(真实代码):

我的问题是 - 有没有更好的方法来处理这种嵌套?我觉得我做错了,因为我是函数式编程的新手并且不了解所有理论。拥有所有嵌套flatten(taskEither)调用并将 anEither转换为TaskEitherwithfromEither对我来说似乎很糟糕。

任何帮助深表感谢!

0 投票
1 回答
815 浏览

typescript - 使用 fp-ts 重写一个用记录器包装的小函数

我想尝试使用 fp-ts 重写我的代码的某些部分,并考虑重构以下方法:

在阅读了有关IO副作用的类型后,我尝试按如下方式使用它:

在最后一个链调用中随意使用map方法来管道通过apiServer对象只是为了在接收它和进一步发送它之间登录,感觉很奇怪。我想知道这是否正确或者是否有任何不同的模式。

0 投票
1 回答
550 浏览

concurrency - 如何在 fp-ts 中限制并发

我们的团队开始学习 fp-ts,我们从一些基本的异步示例开始(大部分来自这里)。依次运行一组Task就很棒了,看起来array.sequence(task)(tasks) 问题来了,在fp-ts中执行并行Task时,限制并发的惯用方式是什么?例如,Promise.map(在 bluebird 中)允许您设置并发限制,例如{concurrency: 4}.

一种解决方案可能是将数组拆分为块,然后使用序列和 flatMap 迭代这些块。但是,这意味着每个块中的每个任务都必须在移动到下一个块之前完成 - 一个长时间运行的任务可能会阻止整个操作。

一定有一些我们缺少的抽象——我们都是 FP 的新手,所以希望这里有更多经验的人可以提供帮助。

0 投票
1 回答
1714 浏览

typescript - FP-TS 中的任务、提升和复杂单子

我有以下代码:

1) savePerson 函数没有运行,但是返回类型是 Promise

2) Fp-Ts 库表明不推荐使用 liftA2 类型,我应该改用 sequenceT。然而,从签名中不清楚 sequenceT 将如何应用于 buildPerson 的参数,如 liftA2

3)有没有更好的方法来组合功能?