【问题标题】:Negative doubles or floats in Haskell (macports)Haskell(macports)中的负双打或浮点数
【发布时间】:2010-11-04 21:30:39
【问题描述】:

当我尝试显示负双精度或浮点数时,为什么会出现分段错误?负整数没有问题。

Prelude> let a = 4
Prelude> :t a
a :: Integer
Prelude> let b = -4
Prelude> b
-4
Prelude> :t b
b :: Integer
Prelude> let c = 5.6
Prelude> :t c
c :: Double
Prelude> let d = -5.6
Prelude> :t d
d :: Double
Prelude> show d
"-Segmentation fault

我尝试了各种方法,似乎正确理解了数字但没有显示。版本信息:

ghci --version
The Glorious Glasgow Haskell Compilation System, version 6.10.4

【问题讨论】:

  • 在 6.10.4 上也无法重现。此外,当我运行代码时,:t 显示一般类型,而不是默认类型(即,我得到 Num t => tFractional t => t 作为类型)。
  • 你会碰巧使用 MacPorts 吗? trac.macports.org/ticket/25265
  • 感谢 KennyTM 和安德烈。我猜你是对的。我在一台带有 ghc 6.8.2 的旧机器上尝试过,它运行良好。但我在 macport 上使用最新版本的 ghc,所以它似乎只是一个错误版本。让我看看我是否可以更新它。
  • @Wesley,是的! macports 必须更新它!

标签: haskell macports ghci


【解决方案1】:

MacPorts 上的 GHC 似乎已损坏。见https://trac.macports.org/ticket/25265

考虑改为从 haskell.org 安装 Haskell 平台,其中包括 GHC 6.12.3 和一系列 Haskelly 好东西。

【讨论】:

  • 是的,macports 真的坏了。我尝试远程安装 haskell-platform macports。它失败了,吐出一个日志报告,我再也无法访问我的远程机器了。
  • 我恐怕不是很清楚;我的意思是您可能想要安装上面链接中提供的二进制文件,而不是通过 MacPorts 安装。我假设 MacPorts haskell 平台将再次包含 GHC 6.10.4。
【解决方案2】:

您应该意识到的最重要的事情是,在 Haskell 中应该永远发生分段错误。它的类型系统确保在运行时不会出现类似的“错误”。如果您确实看到了分段错误,那么您的 Haskell 编译器中存在错误,或者您正在使用 Haskell FFI 连接 C 代码并且您的 C 代码出现问题。但是,在纯 Haskell 代码中,您永远不会看到这一点。

【讨论】:

    【解决方案3】:

    2011 年 3 月:这已在 Haskell Platform 的 GHC 7 版本中得到修复,其中 32 位和 64 位 Mac 本机端口都处于良好状态。

    【讨论】:

      【解决方案4】:

      在 6.12.3 上为我工作。可能是那个版本的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-29
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 2013-05-20
        • 1970-01-01
        相关资源
        最近更新 更多