3

誰かが私にこれを説明できますか?最近のバージョンのGHCを使用しています。

Prelude> let f x = 1/((x**2)-36)  
Prelude> f (0 - 6.5)  
0.16  
Prelude> f (0 - 5.999)  
-Segmentation fault  
Prelude> f (0 - 5)  
-Segmentation fault

ありがとう!

編集:GHCiバージョン6.10.4、Mac OS 10.6、Intel Macbook Pro
Edit2:GHCi7.0.3にはこの問題はありません。

4

3 に答える 3

1

GHCi バージョン 6.10.4、Mac OS 10.6、Intel Macbook Pro

このような状況で最初に行うべきことは、ソフトウェアの最新の安定版リリースを確認することです。

  • GHC 6.10.4 は 2009 年 7 月にリリースされました。
  • GHC 7.0.3 は現在、2011 年 5 月に利用可能です。

Haskell Platform経由で GHC 7.0.3 にアップグレードし、もう一度確認してください。

それでもバグがある場合は、バグ トラッカーから報告してください。クラッシュには優先度の高いバグ修正が必要です。

于 2011-05-12T17:12:28.583 に答える
1

GHC 7.02 を搭載した Windows XP で動作します。

GHCi, version 7.0.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> let f x = 1/((x**2)-36)
Prelude> f (0 - 6.5)
0.16
Prelude> f (0 - 5.999)
-83.34027835650902
Prelude> f (0 - 5)
-9.090909090909091e-2
Prelude>
于 2011-05-12T16:50:18.007 に答える
1

興味深いことに、ここではセグメンテーション違反は発生しません (MacOS の場合):

GHCi, version 7.0.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.

Prelude> let f x = 1/((x**2)-36)  
Prelude> f (0 - 6.5)  
0.16
Prelude> f (0 - 5)  
-9.090909090909091e-2
Prelude> 
于 2011-05-12T16:37:17.247 に答える