1

我相当确定不久前 GHC 添加了在Handle. 但是,当我查看时System.IO,我看不到任何与字符编码有关的内容。(我有 Haskell 平台 2012.4.0.0)

我是盲目的,还是只是弄错了?

4

2 回答 2

2

我调查了函数隐藏的位置。

摘要:确保System.IO从包库中使用,而不是从包 haskell2010 中使用。

详细信息: Hoogle 告诉我System.IO.hSetEncoding在最新的基础包中有。

检查有关 Haskell 平台 2012.4.0.0 的文档,我System.IOhaskell2010包中看到了一个模块。而且该模块似乎不包含hSetEncoding.

不过不要绝望,似乎还有System.IO包含 的 from base hSetEncoding

所以我想你只需要确保你使用System.IO来自基础而不是来自haskell2010。

于 2013-08-26T10:42:36.557 回答
1

我的天啊!

好的,我刚刚想通了。

  1. 似乎有两个包都可以导出System.IO-base包和haskell2010包。
  2. 两个版本的模块是不同的。具体来说,只有 from 模块中base包含所有字符编码内容。
  3. 当您转到本地安装的模块索引时,它只向您显示System.IO其中包含的版本haskell2010- 没有所有字符编码的东西。

看来查看版本的唯一方法base是单击从中导出的其他模块,然后单击“内容”,然后从那里base导航到。然后它会向您显示正确的模块!System.IO

违反直觉,很多吗?o_O

好的,所以我现在找到了我的功能,但是伙计,黑线鳕应该在处理这个晦涩的边缘情况方面做得更好......

于 2013-08-26T10:34:09.723 回答