问题标签 [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 回答
71 浏览

haskell - Haskell错误加载模块与mysql

Haskell:数据库.MySQL.Base

加载模块:

我尝试加载模块,但它标记我错误。有谁知道正确的方法是什么?

0 投票
1 回答
713 浏览

haskell - 如何在 Haskell 中使用 IO Double 作为常规 Double

我必须遵循代码

当我打电话时

我收到这个错误

如果我将isInCircle函数的参数更改为IO Double我得到错误sqrt和添加......

你能帮助我吗?我的代码:

0 投票
1 回答
100 浏览

haskell - Haskell - 如何嵌套包含多个 putStrLn satatements 的多个 if 语句

这是问题的要点:

指示如何向其中添加返回语句的奖励积分。

工作代码

这个链接显示了一个有点工作的代码,它允许我使用命令式风格探索问题空间。

0 投票
2 回答
421 浏览

haskell - Haskell 从 IO 域获取值

在阅读了 Haskell 书籍之后,我有点困惑(或者我只是忘记了)如何从 IO 域中获取一个值,进入“Haskell 世界”来解析它,如下所示:

显然编译器抱怨。Couldn't match [] with IO. 是否有一个简单的经验法则可以在“世界”之间传递值,或者省略类型符号只是我的坏事?

0 投票
3 回答
140 浏览

haskell - haskell 中的操作符 <- 表现如何?

我了解(有点)单子并了解运算符 <- 将从单子中提取值。

但它如何与不同的类型一起工作?

通常,我看到它被用来从 IO monad 中提取字符串。但是在下面的示例代码中,我看不到为什么它在主第 3 行失败,抱怨它期待一种 IO int?编译器如何推断需要 IO int?

<-它 ( ) 在方法中还有什么作用multWithLog

0 投票
2 回答
108 浏览

haskell - 是否可以在不使用 do 表示法的情况下编写此代码?

我有一些功能

我想要另一个功能:

foo不使用do符号可以写吗?我在想类似的东西,liftA2但那行不通。

0 投票
2 回答
414 浏览

haskell - IO动作中的Haskell递归

仍然是一个初学者,无法弄清楚IO动作中的递归循环。认为:

我想为我想要随机检查的 10 台机器生成一个列表,然后我可以重复调用一些可以将 10 倍添fNoInspectPerHour加到列表中的东西吗?

我尝试了一个外部函数,但我无法从IO (). 请注意,这putStrLn只是终止do-block,因为我不需要控制台输出。

PS。也欢迎在没有的情况下终止do-block 的建议。putStrLn

0 投票
2 回答
282 浏览

parsing - Haskell `do` 表示法如何知道当它不是由返回定义时要取哪个值?

我有这个单子对象。

我有这个定义,item有人告诉我“读一个字符”,但我真的看不到任何读物。

但是好吧,好吧,也许我应该放松一下“阅读”这个词的字面意思并与之相适应。继续前进,我有

这就是我很困惑的地方。变量中存储了c什么?由于item是一个Parserwith parameter Char,我的第一个猜测是c存储这样一个对象。但是经过一秒钟的思考,我知道现在do符号不起作用,你没有得到 monad,你得到了 monad 的内容。太好了,但那告诉我c就是功能

但显然这是错误的,因为定义的下一行sat视为c一个角色。这不仅不是我所期望的,而且它的结构比我所期望的低了三个级别!不是函数,不是Maybe对象,也不是元组,而是Just埋在函数内部的元组的左坐标!那个小角色是怎么在外面工作的?是什么指示<-提取单子的这一部分?

0 投票
1 回答
267 浏览

haskell - Haskell IORef - 答案与获得答案的函数

我试图了解如何IORefs真正使用,并且在遵循我在https://www.seas.upenn.edu/~cis194/spring15/lectures/12-unsafe.html上找到的示例代码时遇到了麻烦

printCounts执行“ ”时,为什么在“ ”块c <- newCounter中没有c得到执行工作的结果,这似乎应该在第一次调用时分配给常量“”然后永远不会改变?相反,似乎被分配了在该 " " 块中定义的函数,然后每次到达另一个 " " 时都会重新执行该函数。似乎答案在某种程度上在于具有双重嵌套的“ ”类型,但我无法理解为什么这会使函数在调用时重新执行,而不是只评估一次常量。newCounterreturn $ doIO 0creturn $ doprintCountsprint =<< cnewCounterIO (IO Int)c

0 投票
3 回答
129 浏览

haskell - 做符号和绑定签名

我是 Haskell 和函数式编程的新手,我想知道为什么这样的示例(“嵌套循环”)有效:

下面的一些东西是一种伪 Haskell 语法,但我希望它能说明我的理解。

我的理解是变成了这样

我觉得这个表达

生成部分应用函数的列表

连接到

最后一步,看起来像这样

变成

我的困境是因为类型return $ b * 10 + a似乎与类型不同[40 + a, 50 + a, 60 + a]

绑定签名不应该是这样的吗?

在这个例子中似乎