问题标签 [folktale]
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.
javascript - 将 Fluture Future 转换为民间故事结果
我有以下示例代码来获取 uuid:
结果不是可映射类型,并在我调用时引发错误result.map
:
javascript - 民间故事/幻想世界可能没有按预期工作
阅读Frisbys 函数式编程指南,目前在关于Maybe
. 在附录中,本书建议使用民间故事或幻想世界。
然而,这两个图书馆Maybe
似乎都不像书中描述的那样工作。
在从书中复制的这个示例中,第一个语句可以正常工作,但第二个得到一个TypeError
. 这似乎完全违背了 的宗旨Maybe
。还是我误解了什么?
javascript - 从 data.task 迁移到处理拒绝的民间故事
在data.task
包中,我可以解决或拒绝 api 调用,如下所示:
我将如何在新folktale
版本中实现这一点Task
?我可以解决请求,但如何拒绝?我尝试了以下方法:
当我提供一个不存在的文件时,不会调用 onRejected 处理程序。
我希望看到什么:
由于我让程序读取了一个不存在的文件,因此它应该运行 onRejected 并记录something went wrong
.
我现在看到了什么: 什么都没有。该程序不会出错,但它也不会产生任何东西,它只是正常运行。
使用data.task
(旧版本的任务)时,我可以使用拒绝,这就是它仍然在那里工作的原因。我现在如何使用新版本的 Task 执行此操作?
javascript - 民间故事的未来是为了什么?
背景
我正在阅读每一寸文档,并尽可能多地了解 Folktale。最近,我决定试试Future
。
我们需要未来吗?
现在,虽然我了解and 之间的区别Task
and (支持取消)但我不清楚and之间的区别。Promise
Task
Future
Future
Promise
为什么我要使用 aFuture
而不是 a Promise
?我会有什么好处?好吧,你可以说:“这样你实际上有一个单子,而不是单子的抱歉借口”。
这本身就是一个很好的论点,但是......记住我总是需要从 Promise 转换为其他东西(到 future )并且Future
's API 几乎相同,我不清楚,因为一个新人,我为什么要关心Future
。
代码示例
假设我有这个函数,其中request
是一个发出请求并返回一些结果的函数。
extractRequestInfo
是一个从响应对象中提取数据的函数。如果出现故障,我catch
会出错并返回一个包含所有数据、badId 和错误的对象。
鉴于这是一个 HTTP 请求,我知道我不需要 a Task
,因为我在这里无法取消。所以我的选择是Promise
和Future
。
问题
- 我将如何
Future
在此示例中使用? - 既然这可能会失败,我也应该使用
Result
吗?
javascript - IO 作为组合链中的第一个
我有兴趣在我的 JavaScript 函数组合中尝试类似 Haskell 的 IO monad。
像Folktale的Task似乎与 Haskell 的 IO 相似,因为它是惰性的,因此在技术上是纯粹的。它代表将来可能发生的动作。但我有几个问题。
当所有后面的函数都依赖于组合中初始不纯函数的返回值时,如何形成函数组合?必须首先运行实际的任务,将返回的数据隐式传递给更远的函数。一个人不能只是传递一个未解决的任务来做任何有用的事情,或者可以吗?它看起来像。
我可能遗漏了一些关键的东西,但这样做有什么好处?
一个相关的问题是对不纯函数的惰性求值有什么具体优势?当然,它提供了引用透明性,但理解问题的核心是不纯函数返回的数据结构。后面所有通过管道传输数据的函数都依赖于数据。那么不纯函数的引用透明性对我们有什么好处呢?
编辑:所以在查看了一些答案之后,我能够通过链接轻松地编写任务,但我更喜欢使用 compose 函数的人体工程学。这行得通,但我想知道它是否对函数式程序员来说是惯用的:
然后,另一个可能与风格更相关的问题是,现在我们必须编写所有处理任务的函数,这似乎不如那些处理数组/对象的函数那么优雅和通用。
javascript - 如何将对象的属性应用于函数?
我想对某些对象属性应用不同的功能。假设我有这个对象:
我有一些我想应用于这些属性的功能:
这应该是结果:
使用函数式编程和无点实现这一目标的最佳方法是什么,如果您可以包含使用 Ramda 的示例,我将不胜感激,谢谢!
javascript - 如何从 Crocks javascript 库中的 Monad 中提取值
我知道 monad 通常不想解开底层价值,因为它可能存在也可能不存在。在我的用例中,我想使用函数式编程技术,将 ramda 用于函数库,将 Crocks 用于代数数据结构库,以在功能不完整的代码库中编写代码。我通常会使用 Either、IO 和 Maybe monad 来编写我的代码,然后从结果 monad 中提取最终结果,这样我就可以将值返回给尚未接受 monad 的函数。
Folktale 有一个叫做getOrElse
返回值或未定义/错误字符串的东西。这非常有用,允许我在不期望处理 monad 的环境中进行函数式编写。Crocks 是否有类似的东西,或者是否有其他方法可以解开 Either、IO 或 Maybe?
我想在 Crocks 中复制的民间故事示例:
javascript - 民间故事:结合结果和任务(或只是承诺)
这是一口损坏的代码:
这个想法是从上下文中获取一些值,发出请求并返回带有补充数据的上下文。但它返回一个处于待处理状态的 Promise。我做错了什么?