问题标签 [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.
fp-ts - 使用 FP-TS 消耗 IO
forEach
此代码中部分的惯用 fp 替代方案是什么
?
有一些文档使用sequence_
fromFoldable
但在 fp-ts@2.0.3 中不再可用。
编辑:
我能做的最好的就是
但sequence
收集结果和我真的没有任何关系void[]
。
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 } }
typescript - 执行每个函数直到返回“真实”值的组合函数
我正在寻找一种将功能链接在一起的方法,类似于lodashoverSome
或flow
在 lodash 中。
这是写出的可比函数。
这将是作曲版本。
这个想法是该函数返回带有truthy
值的第一个函数。
仅在 lodash 内这可能吗?是否有更好的带有打字稿支持的组合函数库?
functional-programming - 转换任意一个数组要么(Scalaz中的序列函数)
我仍在学习和玩 fp-ts,但无法弄清楚这一点。
我有一个数组,Either<any, number>[]
我想得到一个Either<any, number[]>
.
我查看Apply.sequenceT
了示例 sequenceToOption ,它看起来很接近。
我想要一个错误或数字数组。
typescript - 如何在fp-ts中组合Either对象的左侧?
对于返回的不同值,我有两个验证函数Either
。如果其中一个有值,我想抛出一个异常,left
如果两者都是right
. 我以前从未使用过 fp-ts 并且无法弄清楚如何正确组合左侧结果。我当前的解决方案有效,但感觉我没有正确使用它。
我已经阅读了https://dev.to/gcanti/getting-started-with-fp-ts-either-vs-validation-5eja的介绍,但该代码与我想要的完全相反:我不关心验证后的输入值,并且只想返回发生的第一个错误。
functional-programming - 如何根据条件从一个 TaskEither 切换到另一个 TaskEither
我是 fp-ts 的新生,试图了解如何将一些东西组合在一起。
因此,我有例如 TaskEither,它正在执行 fetch 并且基于 fetch 的结果我想运行另一个 fetch 或跳转到下一步,目前,我已经这样做了。也许有人知道如何做到这一点的更好方法?
谢谢阅读:)
typescript - 在 TypeScript/fp-ts 中使用 Either 输入错误
我正在使用 fp-ts 并且我有一个返回 HttpError 对象或字符串的函数:
我想在另一个文件中调用这个函数,如下所示:
这基本上就是我在 Scala 中的做法。(除了fold
是 Either 类型的方法,而不是独立函数 - 所以这里我使用了pipe
帮助器)
问题是,我从 ts-server 收到一个错误:
和
我可以通过更迫切的方式来解决这个问题:
但是那时我几乎失去了使用 Either 的好处。
typescript - 在 fp-ts 中链接一些异步任务,保留每个任务的结果
在 fp-ts 中,我试图将一些可能失败的异步任务链接在一起,TaskEither
但我需要稍后使用来自中间任务的结果。
在这个例子中:
该main1
功能是async/await
解决此问题的一种风格的解决方案。我想要做的是在 fp-tschain
样式中模拟这样的东西。main2
这是我的尝试。
因为该async/await
版本将所有中间结果引入本地范围(即foo
和bar
),所以很容易调用mkFooBar
,这取决于这两个结果。
但在 fp-ts 版本中,中间结果被困在每个任务的范围内。
我认为使这个版本工作的唯一方法是让异步函数本身(即getFoo
和getBar
)也返回它们的参数,或者TaskEither
包装器返回参数,以便它们可以传递给下一个函数链。
这是正确的方法吗?还是有更简单的版本更接近该async/await
版本?
typescript - 带有选项和链的 fp-ts 管道不起作用
我有这个示例代码:
我收到了这个编译时错误
我的代码有什么问题?
我期望f1
并f2
运行和其他功能不是因为none
返回,f3
最后输出是Some "X f1 f2"
typescript - fp-ts 在管道中间使用异步函数
我有 3 个函数,f1
,f2
,f3
。
f1
并且f3
是同步和返回Option<string>
,但是f2
是一个异步函数 return Promise<Option<string>>
。
我应该如何在一个管道中使用这三个功能?
这是我的代码: