问题标签 [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.
haskell - 我可以在 Haskell 中使用单独的函数来读取和写入 txt 文件,而不使用“main”函数吗?
我正在使用 Haskell 制作一个需要简单保存和加载功能的程序。当我调用保存函数时,我需要将一个字符串放入一个文本文件中。当我调用 load 时,我需要将字符串从文本文件中拉出。
我知道 Haskell 中围绕 IO 的复杂性。从网上的一些阅读中,我发现可以通过“主要”功能来实现。但是,我似乎只能实现保存或加载......不能同时实现。
例如,我目前有以下功能用于从文件中读取。
我怎样才能实现写功能?它必须在同一个功能内吗?或者我可以分开吗?另外,有没有办法让我能够命名函数加载/保存?当我真正想调用“加载”或“保存”时不得不调用“主”是相当烦人的。
我在网上找不到任何实现这两者的人的例子,而且我发现的任何一个实现总是通过一个主函数。
任何建议将不胜感激。
haskell - fmap 进入 do 块失败并出现打印错误
我试图理解为什么我用 do-block 编写的函数不能重写为 fmap 在列表上的类似 lambda 表达式。
我有以下内容:
生产
但
有错误:
我的 putStrLn 在工作和非工作之间是一致的。进口是一样的。我打印所需的 show-pack-putstrln 舞蹈在工作和非工作之间也是一致的。
打印的使用在工作和非工作之间发生了怎样的变化?
更新 1
更新 2
但也失败了:
algorithm - 函数 n^2/log(n) 的 Big-O 是多少?
算法的时间复杂度由 n^2/log(n) 给出。大O符号是什么?只是 n^2 还是我们保留日志?
haskell - 为什么我不能在这里放一个打印函数语句?
我正在尝试使用 try-catch 块执行以下代码:
但是,我收到以下错误:
如果从 isBinary 函数中删除 print 语句,错误就会消失并且程序运行良好。
为什么我不能在这个函数中加入 print 语句?
if-statement - do 块中的 if 语句给出错误消息
我正在尝试制作一个非常简单的类似蛇的游戏,如果您尝试去 ax,y 坐标您已经访问过,您将输掉游戏。
这是到目前为止工作的代码(您可以使用箭头键移动玩家 1,使用 wasd 移动玩家 2):
所以当你移动时,“#”字符被放下。如果你转到一个已经有“#”的坐标,上面的代码什么也不做,所以我尝试通过在之前添加这个来更改循环函数let updatedList...
:
并添加一个临时的 gameOver 功能:
但是当我尝试在 GHCI 中加载此文件时,我收到以下错误消息: parse error on input 'if'
haskell - 使用 Haskell 的随机元素网格
对 Haskell 的经验绝对为零,我需要想出一个与这个 Python 等效的代码:
产生这样的东西:
看在上帝的份上,我无法理解 Haskell 的 IO 概念(尤其是随机性)。我能想到的最好的是:
仍然没有这样做:
快速谷歌搜索并没有太大帮助 - 我可能没有使用最准确的关键字来解决我面临的这个问题。进行随机更改并希望得到最好的结果变得非常令人沮丧,但是我真的没有时间,也没有精力正确地深入研究 Haskell(尽管这很遗憾),所以现在,我希望有人能指出我的想法这段代码错了。
haskell - GHC 8.6.5 中是否删除了在 do 块中使用 let 语句的功能?
我在 中输入了一些代码ghci
,类似于:
但是,我收到此错误:
在以前的 Haskell/GHC 版本中,我记得这工作得很好——甚至明确地说,在do
块中,你不需要in
关键字。然而,让它发挥作用的唯一方法似乎是:
这不会产生此错误。
这个被删除了吗?如果是这样,我是否需要在表达式中添加第二个do
块?let in
date - Haskell 如何比较 IO 元组和普通元组
我尝试将 IO 元组的元组成员(日期)与普通元组进行比较。
d1 ->(Integer, Int, Int)
和d2 -> IO (Integer, Int, Int)
,
是否可以比较这两个元组?我试过这样的事情:
但我收到消息,我无法将 IO 元组与普通元组进行比较:
有办法解决吗?我将不胜感激任何帮助。
谢谢。
haskell - `return` 语句的类型与函数定义的类型有何不同?
在一个循环中,整数被收集在一个列表中,并且这些整数的一个元组被return
编辑。这如何更改为元组列表?
我期望值的类型是,(Int,Int)
但它是[(Int,Int)]
。为什么?