问题标签 [do-notation]

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 回答
193 浏览

haskell - 我可以在 Haskell 中使用单独的函数来读取和写入 txt 文件,而不使用“main”函数吗?

我正在使用 Haskell 制作一个需要简单保存和加载功能的程序。当我调用保存函数时,我需要将一个字符串放入一个文本文件中。当我调用 load 时,我需要将字符串从文本文件中拉出。

我知道 Haskell 中围绕 IO 的复杂性。从网上的一些阅读中,我发现可以通过“主要”功能来实现。但是,我似乎只能实现保存或加载......不能同时实现。

例如,我目前有以下功能用于从文件中读取。

我怎样才能实现写功能?它必须在同一个功能内吗?或者我可以分开吗?另外,有没有办法让我能够命名函数加载/保存?当我真正想调用“加载”或“保存”时不得不调用“主”是相当烦人的。

我在网上找不到任何实现这两者的人的例子,而且我发现的任何一个实现总是通过一个主函数。

任何建议将不胜感激。

0 投票
2 回答
94 浏览

haskell - fmap 进入 do 块失败并出现打印错误

我试图理解为什么我用 do-block 编写的函数不能重写为 fmap 在列表上的类似 lambda 表达式。

我有以下内容:

生产

有错误:

我的 putStrLn 在工作和非工作之间是一致的。进口是一样的。我打印所需的 show-pack-putstrln 舞蹈在工作和非工作之间也是一致的。

打印的使用在工作和非工作之间发生了怎样的变化?

更新 1

更新 2

但也失败了:

0 投票
1 回答
460 浏览

algorithm - 函数 n^2/log(n) 的 Big-O 是多少?

算法的时间复杂度由 n^2/log(n) 给出。大O符号是什么?只是 n^2 还是我们保留日志?

0 投票
3 回答
107 浏览

haskell - 为什么我不能在这里放一个打印函数语句?

我正在尝试使用 try-catch 块执行以下代码:

但是,我收到以下错误:

如果从 isBinary 函数中删除 print 语句,错误就会消失并且程序运行良好。

为什么我不能在这个函数中加入 print 语句?

0 投票
1 回答
91 浏览

dictionary - 为什么这个字典功能不起作用

我正在尝试使用此处的代码创建和使用字典:

但我收到以下错误:

有什么问题,在 Haskell 中使用字典的正确方法是什么?

0 投票
2 回答
70 浏览

if-statement - do 块中的 if 语句给出错误消息

我正在尝试制作一个非常简单的类似蛇的游戏,如果您尝试去 ax,y 坐标您已经访问过,您将输掉游戏。

这是到目前为止工作的代码(您可以使用箭头键移动玩家 1,使用 wasd 移动玩家 2):

所以当你移动时,“#”字符被放下。如果你转到一个已经有“#”的坐标,上面的代码什么也不做,所以我尝试通过在之前添加这个来更改循环函数let updatedList...

并添加一个临时的 gameOver 功能:

但是当我尝试在 GHCI 中加载此文件时,我收到以下错误消息: parse error on input 'if'

0 投票
3 回答
164 浏览

haskell - 使用 Haskell 的随机元素网格

对 Haskell 的经验绝对为零,我需要想出一个与这个 Python 等效的代码:

产生这样的东西:

看在上帝的份上,我无法理解 Haskell 的 IO 概念(尤其是随机性)。我能想到的最好的是:

仍然没有这样做:

快速谷歌搜索并没有太大帮助 - 我可能没有使用最准确的关键字来解决我面临的这个问题。进行随机更改并希望得到最好的结果变得非常令人沮丧,但是我真的没有时间,也没有精力正确地深入研究 Haskell(尽管这很遗憾),所以现在,我希望有人能指出我的想法这段代码错了。

0 投票
2 回答
113 浏览

haskell - GHC 8.6.5 中是否删除了在 do 块中使用 let 语句的功能?

我在 中输入了一些代码ghci,类似于:

但是,我收到此错误:

在以前的 Haskell/GHC 版本中,我记得这工作得很好——甚至明确地说,在do块中,你不需要in关键字。然而,让它发挥作用的唯一方法似乎是:

这不会产生此错误。

这个被删除了吗?如果是这样,我是否需要在表达式中添加第二个do块?let in

0 投票
1 回答
172 浏览

date - Haskell 如何比较 IO 元组和普通元组

我尝试将 IO 元组的元组成员(日期)与普通元组进行比较。

d1 ->(Integer, Int, Int)d2 -> IO (Integer, Int, Int),

是否可以比较这两个元组?我试过这样的事情:

但我收到消息,我无法将 IO 元组与普通元组进行比较:

有办法解决吗?我将不胜感激任何帮助。

谢谢。

0 投票
1 回答
677 浏览

haskell - `return` 语句的类型与函数定义的类型有何不同?

在一个循环中,整数被收集在一个列表中,并且这些整数的一个元组被return编辑。这如何更改为元组列表?

我期望值的类型是,(Int,Int)但它是[(Int,Int)]。为什么?