问题标签 [ghc]

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 投票
2 回答
8209 浏览

haskell - Haskell 数据类型的内存占用

如何找到在 Haskell(主要是 GHC)中存储某种数据类型的值所需的实际内存量?是否可以在运行时评估它(例如在 GHCi 中),或者是否可以从其组件估计复合数据类型的内存需求?

一般来说,如果类型a和内存需求b已知,那么代数数据类型的内存开销是多少,例如:

例如,这些值在内存中占用了多少字节?

我知道由于垃圾收集延迟,实际内存分配更高。由于惰性评估,它可能会有很大的不同(并且 thunk 大小与值的大小无关)。问题是,给定一个数据类型,它的值在完全评估时需要多少内存?

我发现 GHCi 中有一个:set +s选项可以查看内存统计信息,但不清楚如何估计单个值的内存占用量。

0 投票
1 回答
565 浏览

haskell - 在 Haskell 中将两个类合并/合并为一个类

我有两个不重叠的类型集,并且想要制作另外一组是这两者的联合。代码示例:

GHC 6.12.3 不允许使用错误消息声明这一点:

我明白,这个声明导致失去对重叠实例的控制,因为AB a实例可能会在以后出现(我看不到处理这种情况的简单方法)。 我想应该有一些“解决方法”来获得相同的行为。A aB b

PS变体如:

以及包含某些此类类型的任何其他类型都不适合我的需要(选择由第三方声明类型的实现)

对@camccann 的评论:添加标志以控制标志上的合并/选择类型是个好主意,但我想避免诸如重叠实例的竞争之类的事情。对于那些对此答案感兴趣的人,压缩变体:

0 投票
1 回答
1242 浏览

haskell - 通过 Cabal 从 Hackage 安装 Haskell 包时卡在依赖解析中

这是详细模式的输出。我知道这曾经对我有用,但现在发生了。我已经尝试过使用其他软件包并得到相同的结果。

此时,程序开始消耗虚拟内存,锁定系统并最终提示操作系统警告我磁盘空间减少。

这是我的环境。我也在 Mac OS X 10.4.11 上。

0 投票
1 回答
409 浏览

haskell - Haskell:打印文本编码

Haskell新手在这里。

在尝试调试第三方 Haskell 程序中与语言环境相关的奇怪错误时,我正在尝试打印默认编码:

但它失败了:

我的 google-fu 让我失望了。我错过了什么?

0 投票
1 回答
400 浏览

haskell - 符号 __module_registered 错误的重复定义

我从 GHCi 收到一条关于“符号 __module_registered 的重复定义”的错误消息,如下所示:

如何解决这个问题?

0 投票
5 回答
22693 浏览

syntax - Haskell Error: parse error on input `='

Specs

GHC 6.12.1

Mac OS X 10.6.4 x64

MacBook Pro

Problem

I'm having trouble using let syntax. The following code refuses to compile:

I tried tabbing in y = 2 and z = 3 even more. No dice.

(Undesirable) Solutions

The only way I've gotten the code to compile is either

  1. Replacing hard tabs with spaces.
  2. Replacing the let clause with a where clause.
0 投票
1 回答
2294 浏览

haskell - 如何通过ghc仅获取没有主要功能的目标文件?

[源代码]

数据 FooBar = Foo | 酒吧

[命令]

$ ghc -c foo_bar.hs
foo_bar.hs:1:0: 函数 'main' 未在模块 'Main' 中定义

[配置]

Glasgow Haskell 编译器,版本 6.12.3,用于 Haskell 98,阶段 2,由 GHC 版本 6.10.4 启动

0 投票
1 回答
482 浏览

haskell - 通过 ghc 和 mingw 工具交叉编译 haskell 代码

我已经尝试过-fvia-C-pgms,但它们都没有设法创建可执行文件,从而引发了很多错误,例如Warning: retaining unknown function ``L4' in output from C compiler.

0 投票
2 回答
552 浏览

compiler-construction - Haskell 编译器如何处理“where”语句?

在下面的函数中,我想知道编译器是否足够聪明,x可以计算出保持不变,还是会为列表中的每个项目计算列表的头部?(我正在使用 GHC)

0 投票
2 回答
276 浏览

optimization - 如果我在 Haskell / GHC 中使用未装箱类型(如 Int#),我应该注意哪些事项?

我正在尝试编写一个解析和执行 Brainfuck 代码的小脚本,以了解 GHC 优化选项,我正在尝试优化代码以便更快一点并了解那里发生了什么。

其中一部分是 BF 代码的内部表示,我为此使用了一种特殊的数据类型。这是源代码,包括进行转换的两个函数:

这个想法是,代码将从一些输入(字符串)中读取,由上述代码进行预解析和简化,然后由其他一些函数执行。(假设输入是有效的)。

为了优化此示例,我尝试通过执行以下操作来拆箱MovePointerandAdjustValue构造函数的 Int 参数:

这会将装箱的Int类型变成未装箱的原始Int#类型,这是 GHc 的实现细节。在我阅读的过程中,这个选项只在少数情况下有用,所以我想问一下,如果我想进行这种优化,我需要注意哪些事项。我的目标是允许使用 Haskell 的好处执行 BF 代码 - 懒惰(我想归档,代码可能只根据需要保存在内存中)和简单性。