问题标签 [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.
arrays - 在 fp-ts 和函数式编程中管理单子数组
我对函数式编程非常陌生,并且在数组上运行遍历时遇到了很多困难。
当我阅读这本书时,似乎我应该能够简单地在 Monad 之间遍历,但我无法用fp-ts来理解这个概念。
有人可以使用或任何其他方式解释以下内容array.traverse/sequence
吗?
- 我怎样才能从
TaskEither<Error, string[]>
到TaskEither<Error, Either<Error, string>[]>
; 还是有更好的方法可以从单个错误变为嵌套错误,同时保持打字简单? - 我怎样才能从
TaskEither<Error, Either<Error, string[]>>
类似TaskEither<Error, Option<string[]>>
或类似的东西?还是我们应该将该函数的结果映射到返回Either
?
考虑下面的简化代码,以便更好地了解我们正在使用这些数组做什么:
typescript - 如何在 io-ts 中定义混合数组?
使用最新的https://github.com/gcanti/io-ts/,我想建模 to 的属性result
包含NodeLsStatusResponse
类型NodeStatus
或NodeStatus404
in (t.readonlyArray)
如何定义这种关系io-ts?
javascript - 将 fp-ts TaskEither 与右侧的 Either 连接起来
我有 2 个嵌套请求的流程,其中可能是 3 个不同的结果:
- 请求之一返回错误
- 用户不是匿名的,返回 Profile
- 用户是匿名的,返回 false
这两个请求都可能引发错误,并且由于该实现TaskEither
第一个请求返回用户授权的布尔状态。如果用户被授权,第二个请求会加载用户配置文件。
作为回报,我想获得下一个签名,错误或匿名/配置文件:
我试图这样做:
但作为回报,我得到了E.Either<Error, Profile>
,女巫不方便,因为我必须Anonymous
手动从Error
.
如何解决这个问题?
functional-programming - fp-ts:根据下一个元素过滤数组
我从函数式编程 / 开始fp-ts
。我正在尝试编写一个函数,如果满足下一个元素的条件,该函数会保留一个元素。
例子:
我可能还需要扩展它,以便同时包含匹配和下一个元素,如:
我不知道如何为两者中的任何一个构建一个适当的纯函数。
欢迎任何提示。
typescript - 来自分页 API 的 fp-ts 中的延迟评估递归流
我的目标是从 API 请求事务并将它们存储到数据库中。响应是分页的,我想读取每一页并分批存储事务。
因此,对于一个请求/响应周期,我希望在获取下一批之前处理结果并将其存储到数据库中。
我如何在 fp-ts 中以惯用的方式做到这一点?我注入了实际的 HTTP fetch 调用(url:string, init:RequestInit) => TE.TaskEither<Error, Response>
,以使其保持可测试性。
到目前为止,我已经测试了 RxJS 和 fp-ts,即使我让它工作起来也有点复杂。
确实尝试了递归函数和生成器,但我没有成功地让它被懒惰地评估。
是否有任何现有的 fp-ts 示例显示每个元素都依赖于前一个元素的延迟评估流?
typescript - 使用 fp-ts 在单个输入上运行验证函数列表
我正在使用fp-ts来处理我的应用程序中的验证。我想编写一个接受验证器列表并在单个输入上运行所有验证器的函数。
这些是我想使用的类型:
在内部,我想validations
根据fp-tsValidation
来实现。我正在关注这个例子,但是Validator
当我想动态地生成该列表时,它需要静态地知道 s 的列表。
请注意,为简单起见,我将 Validation 类型设置为 NonEmptyArray 错误,因为我主要对如何组合来自动态构造的数组的验证感兴趣。
最后,如果验证列表为空,我们可以假设输入是有效的。
如何validations
使用getValidation
from提供的组合器来实现fp-ts
typescript - fp-ts 在 mapLeft 中调用异步函数
我是 fp-ts 的新手,所以请帮我解决我的问题:我需要使用异步函数在不同级别上多次记录相同的错误。这是我的示例代码:
我习惯mapLeft
这样做,但它不起作用。我需要做什么才能获得err2
错误(err1)的价值而不是待定的承诺?
typescript - 在 fp-ts 中使用 TaskEither 和 fetch API
我想以某种方式将 Fetch API 包装在 fp-ts 中:
- 创建请求
- 检查状态
- 如果状态正常 - 返回 json
在运行 httpGet 后使用此示例,我得到一个响应并需要手动评估 .json() 方法。那么如何避免这种行为并在管道中获取 json 呢?