hSetEncoding去了哪里?

时间:2013-08-26 10:06:36

标签: haskell character-encoding io

我很确定GHC在前一段时间内添加了在Handle上明确设置字符编码的功能。但是,当我查看System.IO时,我看不到与字符编码有关的任何内容。 (我有Haskell Platform 2012.4.0.0)

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

2 个答案:

答案 0 :(得分:2)

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

摘要:确保使用包基础中的System.IO,而不是包haskell2010。

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

检查有关Haskell平台2012.4.0.0的文档,我看到System.IO包中的haskell2010模块。该模块似乎不包含hSetEncoding

但不要绝望,似乎还有来自System.IO的{​​{1}}包含hSetEncoding

所以我想你必须确保你使用的是System.IO,而不是来自haskell2010。

答案 1 :(得分:1)

天啊!

好的,我只想出来了。

  1. 似乎有两个软件包同时导出System.IO - base软件包和haskell2010软件包。
  2. 该模块的两个版本不同。具体来说,只有来自base的模块中包含所有字符编码内容。
  3. 当您转到本地安装的模块索引时,它只显示System.IO中包含的haskell2010版本 - 没有所有字符编码内容。
  4. base看到版本的唯一方法是点击从base导出的其他模块,然后点击“内容”,然后从那里导航到System.IO然后它会显示正确的模块!

    反直觉,多吗? O_O

    好的,所以我现在找到了我的功能,但是男人,Haddock应该可以更好地处理这个不起眼的边缘情况......