- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 this answer 中看到和 this one “一切都会严重破坏”,Stack 不会让我替换 base,但它会让我替换 bytestring。这有什么问题吗?有没有一种方法可以安全地执行此操作而无需重新编译 GHC?我正在调试基础库的问题,这会非常方便。
注意当我说我想替换 base
时,我的意思是使用base
的修改版本(来自相同 GHC 版本)。我正在调试该库,而不是针对不同的 GHC 版本测试程序。
最佳答案
大多数库都是包含 Haskell 代码的 Haskell 模块的集合。这些库的含义由模块中的代码决定。
但是,base
包有点不同。它提供的许多函数和数据类型没有在标准 Haskell 中实现;它们的含义不是由包中包含的代码给出的,而是由编译器本身给出的。如果您查看base
软件包(以及其他引导库)的源代码,您将看到许多操作的完整定义只是undefined
。编译器运行时系统中的特殊代码实现这些操作并公开它们。
例如,如果编译器不提供 seq
作为原始操作,则事后就无法实现 seq
:没有 Haskell 术语您可以写下的内容将具有与 seq 相同的类型和语义,除非它使用 seq(或根据 seq 定义的 Haskell 扩展之一) >)。同样,许多指针操作、ST
操作、并发原语等都是在编译器本身中实现的。
这些操作不仅通常无法实现,而且通常还与编译器的内部数据结构紧密相关,而编译器的内部数据结构从一个版本到下一个版本都会发生变化。因此,即使您设法说服 GHC 使用来自不同(版本)编译器的 base
包,最可能的结果也只是损坏内部数据结构,并带来不可预测的(并且可能是灾难性的)结果 - - 竞争条件、内存垃圾、空间泄漏、段错误等等。
如果您需要多个版本的base,只需安装多个版本的GHC即可。它经过精心设计,以便多个版本可以在一台机器上和平共存。 (特别是安装多个版本绝对不需要重新编译 GHC,甚至不需要第一次编译 GHC,这似乎是您主要关心的问题。)
关于haskell - 为什么我无法替换使用 GHC 分发的库?如果我这样做会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899597/
runghc 和 ghc 有什么区别? 我运行了一个简短的程序,似乎可以用两者编译,除了我用 runghc 得到了以下内容,但不是普通的 ghc: error: Variable not in sco
如果 friend 想要运行我的 Haskell 二进制文件,他是否必须先安装 Haskell,还是可以立即自行运行二进制文件? Mac、Windows 和 Linux 上的答案相同吗? 最佳答案 G
ffunction glMultiDrawElements 需要一个指向指针的指针作为其参数之一。如何从 StorableArray Int a 获取 Ptr(Ptr a) ? 最佳答案 您需要先将索
module Has (r,p,s) where import Prelude ((==),Bool(..),otherwise,(||),Eq) import qualified Data.List
我已经构建了 ghc-HEAD,我想尝试构建所有的 stackage lts 或 nightly 看看它能做多少。 无论我说什么都无法说服 stack 使用我的新 ghc 构建任何东西。我尝试设置如下
我正在使用 Emacs (24.3.1) 在 haskell-mode 中与 ghc-mod 一起使用 Haskell。 现在除了一件烦人的事情外,一切都很好: GHC 信息缓冲区中的每个输出仅包含第
为什么升级到 OSX Mavericks 后我的 GHC 7.6.3 不能工作? 最佳答案 花了很长时间才弄清楚如何同时使用 OSX 10.9 和 GHC 7.6.3,这里有一些技巧可以帮助您重新构建
我有一个带有 cabal 文件的主要 Haskell 可执行程序。在那里,我指定 ghc-options . 这个可执行文件链接到野外的其他库。请问ghc-options忽略这些库的 cabal 文件
我有一个使用 -Wall 编译的库,并且我有一个使用 -Wall -Wno-incomplete-patterns 的测试套件 当我使用 stack ghci --test 启动 ghci 时,ghc
我正在尝试使用以下脚本在 Windows 上安装 GHC(并将 ghc 放在路径中),但是当我尝试运行 ghci --version 时它失败了。我认为脚本有问题。 install: - ps:
我在 $HOME 中安装了 ghc-7.2.2 unknown linux tar.bz2在archlinux上。 在使用 cabal-dev 成功安装多个软件包后,尝试安装例如。我得到的解析数字、文
想法 我正在写 DSL ,编译为 Haskell。 该语言的用户可以定义自己的不可变数据结构和相关函数。关联函数是指属于数据结构的函数。 例如,用户可以编写(在“pythonic”伪代码中): dat
(我的问题是在没有 haskell-platform、ghc、cabal 等的情况下分发二进制文件) 我需要部署一个结构良好的 haskell 应用程序(Yesod 脚手架),但我有磁盘空间限制。 G
我试图将 Cygwin 安装程序指向 http://haskell.org/ghc/cygwin ,但安装程序无法找到 setup.ini.sig。如果可能的话,我该如何编辑我的 .bashrc 以引
我有一个现有的 Haskell 函数,它使用 GHC API 从模块中动态加载已编译的代码。它基于博客文章中的代码 Dynamic Compilation and Loading of Modules
我使用:Ubuntu 上的 GHC 7.6.3(通过 apt-get install haskell-platform) 从当前存储库安装它。 正在尝试安装ghc-mod ,因为我的 ide 插件需要
AFAIK,有两种方法可以在 Haskell 中获取用于调试的调用堆栈: 添加 HasCallStack代码中的约束 使用 ghc -prof -fprof-auto-top 编译代码 我的测试代码:
我想用 64 位 GHC 构建 32 位 DLL。这是最小的例子。 测试.hs {-# LANGUAGE ForeignFunctionInterface #-} module Test where
ghc-gc-tune 0.2.1 可以与 ghc 7.4.1 一起使用吗?看来 ghc-gc-tune 已经有一段时间没有更新了,可能只适用于 ghc 6.x?我找不到任何可靠的信息。 我收到以下错
语言扩展 ExplicitForall 使得使用 forall 绑定(bind)类型变量成为可能但不是必需的。 例如,下面的程序可以编译 {-# LANGUAGE ExplicitForAll #-}
我是一名优秀的程序员,十分优秀!