问题标签 [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.
haskell - Haskell 数据类型的内存占用
如何找到在 Haskell(主要是 GHC)中存储某种数据类型的值所需的实际内存量?是否可以在运行时评估它(例如在 GHCi 中),或者是否可以从其组件估计复合数据类型的内存需求?
一般来说,如果类型a
和内存需求b
已知,那么代数数据类型的内存开销是多少,例如:
例如,这些值在内存中占用了多少字节?
我知道由于垃圾收集延迟,实际内存分配更高。由于惰性评估,它可能会有很大的不同(并且 thunk 大小与值的大小无关)。问题是,给定一个数据类型,它的值在完全评估时需要多少内存?
我发现 GHCi 中有一个:set +s
选项可以查看内存统计信息,但不清楚如何估计单个值的内存占用量。
haskell - 在 Haskell 中将两个类合并/合并为一个类
我有两个不重叠的类型集,并且想要制作另外一组是这两者的联合。代码示例:
GHC 6.12.3 不允许使用错误消息声明这一点:
我明白,这个声明导致失去对重叠实例的控制,因为AB a
实例可能会在以后出现(我看不到处理这种情况的简单方法)。
我想应该有一些“解决方法”来获得相同的行为。A a
B b
PS变体如:
和
以及包含某些此类类型的任何其他类型都不适合我的需要(选择由第三方声明的类型的实现)
对@camccann 的评论:添加标志以控制标志上的合并/选择类型是个好主意,但我想避免诸如重叠实例的竞争之类的事情。对于那些对此答案感兴趣的人,压缩变体:
haskell - 通过 Cabal 从 Hackage 安装 Haskell 包时卡在依赖解析中
这是详细模式的输出。我知道这曾经对我有用,但现在发生了。我已经尝试过使用其他软件包并得到相同的结果。
此时,程序开始消耗虚拟内存,锁定系统并最终提示操作系统警告我磁盘空间减少。
这是我的环境。我也在 Mac OS X 10.4.11 上。
haskell - Haskell:打印文本编码
Haskell新手在这里。
在尝试调试第三方 Haskell 程序中与语言环境相关的奇怪错误时,我正在尝试打印默认编码:
但它失败了:
我的 google-fu 让我失望了。我错过了什么?
haskell - 符号 __module_registered 错误的重复定义
我从 GHCi 收到一条关于“符号 __module_registered 的重复定义”的错误消息,如下所示:
如何解决这个问题?
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
- Replacing hard tabs with spaces.
- Replacing the
let
clause with awhere
clause.
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 启动
haskell - 通过 ghc 和 mingw 工具交叉编译 haskell 代码
我已经尝试过-fvia-C
和-pgm
s,但它们都没有设法创建可执行文件,从而引发了很多错误,例如Warning: retaining unknown function ``L4' in output from C compiler
.
compiler-construction - Haskell 编译器如何处理“where”语句?
在下面的函数中,我想知道编译器是否足够聪明,x
可以计算出保持不变,还是会为列表中的每个项目计算列表的头部?(我正在使用 GHC)
optimization - 如果我在 Haskell / GHC 中使用未装箱类型(如 Int#),我应该注意哪些事项?
我正在尝试编写一个解析和执行 Brainfuck 代码的小脚本,以了解 GHC 优化选项,我正在尝试优化代码以便更快一点并了解那里发生了什么。
其中一部分是 BF 代码的内部表示,我为此使用了一种特殊的数据类型。这是源代码,包括进行转换的两个函数:
这个想法是,代码将从一些输入(字符串)中读取,由上述代码进行预解析和简化,然后由其他一些函数执行。(假设输入是有效的)。
为了优化此示例,我尝试通过执行以下操作来拆箱MovePointer
andAdjustValue
构造函数的 Int 参数:
这会将装箱的Int
类型变成未装箱的原始Int#
类型,这是 GHc 的实现细节。在我阅读的过程中,这个选项只在少数情况下有用,所以我想问一下,如果我想进行这种优化,我需要注意哪些事项。我的目标是允许使用 Haskell 的好处执行 BF 代码 - 懒惰(我想归档,代码可能只根据需要保存在内存中)和简单性。