Haskell是一种函数式编程语言,具有强大的静态类型,惰性求值,广泛的并行性和并发支持以及独特的抽象功能。
为什么我不能定义这个模式同义词? 模式 双 a = (a,a) 错误: • “a”的定义相互矛盾 绑定时间: :1:21 :1:23 ...
haskell中的变量名需要小写,但是 如果我们要存储 g = 9.8 和 G = 6.67300 × 10-11 (在以下场景中),如何在 .hs 文件中声明变量? 传统物理学家
当我运行代码时: 导入 Control.Applicative 导入控制.并发 导入Control.Monad 导入网络.Socket 导入系统.环境 导入系统.IO 导入数字 (showHex) 进口品质...
GitHub Autograder Tasty 处理写入异常
我正在 Tasty 中为 GitHub 的自动评分器对以下 Haskell 函数进行单元测试: countLetters :: IO [整数] 计数字母 = 做 putStr "第一个条目:" x <-
我正在讨论多态性,我正在尝试了解这种功能的实际用途。 我对Rank 2的基本理解是: 输入 MyType = ∀ a。一个 -> 一个 子函数 :: a -> a 子功能 el ...
我正在尝试解析 Haskell 中的表达式。我已经可以使用在 dhall 项目中找到的下面的代码解析二进制表达式,但我没有正确理解它。这里是: makeOperator::
我正在尝试在 Haskell 中打印列表列表。这是我之前为两个子列表成功完成的事情,但我不记得所有步骤,而且我还没有看到任意数字的东西......
语言中出现递归类型时是否需要折叠和展开?我正在阅读 Benjamin C. Pierce 所著的《类型和编程语言》一书。第 4 节“递归类型”介绍
为 Github 自动评分器实现 I/O Tasty-Hunit 测试
我接到的任务是为 GitHub 的自动评分器和 Tasty 的 IO 函数实现测试。函数代码如下: countLetters :: IO [整数] 计数字母 = 做 putStr...
关于 Monad Transformer Stack pipeline 中不同步骤的不同要求
我在之前的一个问题中接受的激光聚焦答案既令人费解又具有启发性,就在我重新打开我的 Real World Haskell (多好的一本书!)并决定额外阅读
我正在尝试构建一个基于 gitlib 的应用程序,并希望使用此类型签名编写一些附加函数:MonadGit r m => m [RefName]。和gitlib自带的listReferences一样,所以...
我想使用标准对具有两个输入的函数进行基准测试。然而,根据标准进行基准测试的函数似乎只能接受一个输入。我对 Haskell 还很陌生,我确信...
我有一个 CSV 文件,有 2 列,每列有 32100 行。我需要导入这些数据并将每列分成一个列表列表,每个列表有一千个值。例如,让column2_data = [[...
我一直在研究 ListT 的实现,以找到一种好方法来做这样的事情: 函数列表=做 设置 <- get -- Data.Set el <- list guard $ Set.notMember el set return el...
C++ 中的函数式编程,第 214 页,参考与 Haskell 的 Either 相同的预期 monad,内容如下 [...] 一旦您绑定的任何函数返回...
我有一个通常使用 nix 和 cabal 构建的项目,但是我也想将我的文档发布到 gitlab 页面上。在 gitlab CI 上运行我的 nix 是不切实际的,所以我一直在使用 cab...
采用 MaybeT monad 转换器: newtype MaybeT m a = MaybeT { runMaybeT :: m (Maybe a) } 我没想到它会有不同的定义,因为 Maybe 只是一个带有 (opti...
我已按照此网站上的说明进行操作:https://www.haskell.org/get-started/ 在 VS code 中设置 haskell。当我尝试运行 haskell 项目时,我收到一条 VS Code 错误消息: haskell-调试-
我正在为逻辑公式编写一个解析器,但它无法解析 Either 类型的列表。 解析器适用于所有情况,除了将函数替换为谓词之外—— 解析 P(f(x:X)=a:A,b:...
我可以使用 StateT/MaybeT/forever 来消除此 IO 操作中的显式递归吗?
我有一个这样的程序, 开始 :: [Q] -> R -> IO R 开始 qs = 修复 $ ecurse r -> 做 <- select qs (r', exit) <- askQ q r (if exit then return else recurse) r' that