问题标签 [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 投票
1 回答
295 浏览

fp-ts - 使用 FP-TS 消耗 IO

forEach此代码中部分的惯用 fp 替代方案是什么

?

有一些文档使用sequence_fromFoldable但在 fp-ts@2.0.3 中不再可用。

编辑:

我能做的最好的就是

sequence收集结果和我真的没有任何关系void[]

0 投票
1 回答
4451 浏览

fp-ts - (已解决)如何在 FP-TS 中链接依赖的 TaskEither 操作

我是 FP-TS 的新手,但仍然不太了解如何使用TaskEither. 我正在尝试异步读取文件,然后使用 yaml-parse-promise 解析生成的字符串。

==编辑==

我用文件的全部内容更新了代码以提供更多上下文,并应用了 MnZrK 提供的一些建议。抱歉,我还是 FP-TS 的新手,我仍在努力让类型匹配。

现在我的错误在于该map(printConfig)行:

[我通过使用来自 TaskEither 而不是来自 Either 库的 getOrElse 解决了这个问题]

==结束编辑==

我已经使用 IOEither 成功地执行了此操作,作为与该项目的同步操作:https ://github.com/anotherhale/fp-ts_sync-example 。

我还在这里查看了示例代码: https ://gcanti.github.io/fp-ts/recipes/async.html

完整代码在这里:https ://github.com/anotherhale/fp-ts_async-example

结果输出是: { _tag: 'Right', right: Promise { <pending> } }

但我想要生成的 AppConfig: { service: { interface: '127.0.0.1', port: 9090 } }

0 投票
1 回答
111 浏览

typescript - 执行每个函数直到返回“真实”值的组合函数

我正在寻找一种将功能链接在一起的方法,类似于lodashoverSomeflow在 lodash 中。

这是写出的可比函数。

这将是作曲版本。

这个想法是该函数返回带有truthy值的第一个函数。

仅在 lodash 内这可能吗?是否有更好的带有打字稿支持的组合函数库?

0 投票
2 回答
847 浏览

functional-programming - 转换任意一个数组要么(Scalaz中的序列函数)

我仍在学习和玩 fp-ts,但无法弄清楚这一点。

我有一个数组,Either<any, number>[]我想得到一个Either<any, number[]>.

我查看Apply.sequenceT了示例 sequenceToOption ,它看起来很接近。

我想要一个错误或数字数组。

0 投票
2 回答
2574 浏览

typescript - 如何在fp-ts中组合Either对象的左侧?

对于返回的不同值,我有两个验证函数Either。如果其中一个有值,我想抛出一个异常,left如果两者都是right. 我以前从未使用过 fp-ts 并且无法弄清楚如何正确组合左侧结果。我当前的解决方案有效,但感觉我没有正确使用它。

我已经阅读了https://dev.to/gcanti/getting-started-with-fp-ts-either-vs-validation-5eja的介绍,但该代码与我想要的完全相反:我不关心验证后的输入值,并且只想返回发生的第一个错误。

0 投票
0 回答
555 浏览

functional-programming - 如何根据条件从一个 TaskEither 切换到另一个 TaskEither

我是 fp-ts 的新生,试图了解如何将一些东西组合在一起。

因此,我有例如 TaskEither,它正在执行 fetch 并且基于 fetch 的结果我想运行另一个 fetch 或跳转到下一步,目前,我已经这样做了。也许有人知道如何做到这一点的更好方法?

谢谢阅读:)

0 投票
2 回答
1896 浏览

typescript - 在 TypeScript/fp-ts 中使用 Either 输入错误

我正在使用 fp-ts 并且我有一个返回 HttpError 对象或字符串的函数:

我想在另一个文件中调用这个函数,如下所示:

这基本上就是我在 Scala 中的做法。(除了fold是 Either 类型的方法,而不是独立函数 - 所以这里我使用了pipe帮助器)

问题是,我从 ts-server 收到一个错误:

我可以通过更迫切的方式来解决这个问题:

但是那时我几乎失去了使用 Either 的好处。

0 投票
1 回答
2079 浏览

typescript - 在 fp-ts 中链接一些异步任务,保留每个任务的结果

在 fp-ts 中,我试图将一些可能失败的异步任务链接在一起,TaskEither但我需要稍后使用来自中间任务的结果。

在这个例子中:

main1功能是async/await解决此问题的一种风格的解决方案。我想要做的是在 fp-tschain样式中模拟这样的东西。main2这是我的尝试。

因为该async/await版本将所有中间结果引入本地范围(即foobar),所以很容易调用mkFooBar,这取决于这两个结果。

但在 fp-ts 版本中,中间结果被困在每个任务的范围内。

我认为使这个版本工作的唯一方法是让异步函数本身(即getFoogetBar返回它们的参数,或者TaskEither包装器返回参数,以便它们可以传递给下一个函数链。

这是正确的方法吗?还是有更简单的版本更接近该async/await版本?

0 投票
1 回答
1256 浏览

typescript - 带有选项和链的 fp-ts 管道不起作用

我有这个示例代码:

我收到了这个编译时错误

我的代码有什么问题?

我期望f1f2运行和其他功能不是因为none返回,f3最后输出是Some "X f1 f2"

0 投票
1 回答
2241 浏览

typescript - fp-ts 在管道中间使用异步函数

我有 3 个函数,f1f2f3

f1并且f3是同步和返回Option<string>,但是f2是一个异步函数 return Promise<Option<string>>

我应该如何在一个管道中使用这三个功能?

这是我的代码: