问题标签 [io-monad]

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 投票
0 回答
121 浏览

functional-programming - IO 在 FP 与非 FP 语言中的工作方式的差异

我们这里用简单的案例(伪代码)

现在这可能会像这样组成

两者之间究竟有什么区别?IO monad 比其对应的 IO 方式更擅长什么?

0 投票
1 回答
209 浏览

haskell - 如何使用 Scotty 在前端显示来自 HTTP GET 请求的响应?

我是第一次尝试 Scotty,但我似乎无法摆脱我的 GET 请求。响应作为类型返回

我知道我需要将它转换为 Scotty 可以输出的类型,但我不知道该怎么做。

我的完整代码是:

我尝试使用 LiftIO,但这仍然给我一个类型错误。我想知道我应该如何准确地转换我的响应,以便我可以在前端显示它,就像我用 html 显示我的初始“Hello World”一样。

0 投票
2 回答
142 浏览

algorithm - Haskell - 如何避免与 IO 混淆

我在haskell上实现了一些算法。该算法需要生成一些数据。

我有一个以生成函数为参数的算法函数。例如,算法只是将输入数据乘以 n:

dgf用于生成数据。如何正确编写函数头,就像dgf任何具有任意数量参数的函数一样?

另一个变体不接受生成函数,而是接受已经生成的数据。

所以,现在让我们假设我正在stdGen使用 IO 生成数据。如何使函数更通用,以便它可以同时接受 IO 实例和普通值,例如[1,2,3]. 这也与具有功能的变体有关,因为它也可以产生 IO。

总而言之,哪种解决方案更好 - 具有生成功能或预生成数据?

提前致谢。

0 投票
1 回答
230 浏览

haskell - Haskell 放置 IO 字符串

我正在尝试读取并打印映射到文件名列表的“readProcess”命令的输出:

每次我尝试将 putStrLn 映射到 mdList 时,都会收到此错误:

我已经阅读了许多似乎只是在 IO 字符串上使用 putStrLn 的 StackOverflow 答案,但我无法这样做。另外,我是 Haskell 的新手,因此也感谢任何其他提示。

0 投票
3 回答
1099 浏览

haskell - Haskell 中的 print 是纯函数吗?

在 Haskell 中是print一个纯函数;为什么或者为什么不?我认为不是,因为它并不总是返回与纯函数应该返回的值相同的值。

0 投票
1 回答
77 浏览

shell - Haskell: Turtle: 管理 Shell 类型

这是一个工作片段:

我可以在控制台上看到路径列表。其实我想有类似[FilePath]使用的东西,例如:

自然,它不会编译,lstree因为它是:

处理这Shell件事的正确方法是什么?这是一个新手问题,对不起。

0 投票
3 回答
455 浏览

list - Haskell:如何从一个通用列表中制作文件列表和目录列表

这是一个新手问题。假设我想将文件和目录列表分成文件列表和目录列表:

可能这是一个无可救药的重复,我只是错过了正确的关键字。做(和调用)这个的正确方法是什么?

文件和目录随机出现。

0 投票
5 回答
1544 浏览

haskell - Haskell:如何保持计数

我以传统方式递归地遍历目录。这是一个工作原型:

我有一个不那么不寻常的要求:每个跟踪行都应该编号(它不是真正用于跟踪)。像这样:

到目前为止,我看到的所有解决方案都丑陋得超出想象,如果适用的话。有没有很好的管理方法?

0 投票
2 回答
106 浏览

haskell - 返回 IO 操作的后果是什么?

在 Haskell 中,类型构造函数IO是一个带有语句的 monad,return它可以将任何表达式提升到它的IO版本。

没有什么能阻止我们将已经是IO动作的东西提升到它的IO版本——给我们一种形式IO (IO a)

所以我可以例如编写以下程序:

在执行时什么都不做。

我的问题是,当这个 main 执行时,引擎盖下会发生什么?

return是否存在对IO 操作有意义的情况?

0 投票
1 回答
150 浏览

haskell - 控制 Monad (when 等) 和非 IO() 返回类型

我正在尝试在我的程序中使用“何时”功能,因为如果某事是真的,我想执行一个动作,而不是如果它不是真的。我也可以通过使用 Maybe monad 来完成同样的事情,但这会使我的程序的其余部分变得混乱。

问题是,当期望返回类型为 IO() 但我想让它(或我自己的版本)适用于 IO(Response ByteString)

到目前为止,这是我的功能代码:

编辑:“打印”潜入我最初发布的代码中,这是我尝试过的东西,我已经删除了它。我可以使用 print,但是我还需要使用 foreign.marshall 中的 unsafeLocalState,这是不可取的吗?在这种情况下,代码将变得相同,但使用 when hasRel (print $ unsafeLocalState (post addr ("dummy" := details)))