2013-08-26 55 views
1

我很确定,后面的GHC增加了在Handle上明确设置字符编码的能力。但是,当我查看System.IO时,我没有看到与字符编码有关的任何内容。 (我有Haskell平台2012.4.0.0)hSetEncoding去哪了?

我瞎了还是干脆错了?

回答

2

我调查了其中的功能被隐藏。

摘要:请务必使用来自软件包基础的System.IO,而不是从haskell2010软件包中使用。

详情: Hoogle告诉我,有最新基地System.IO.hSetEncoding

检查有关Haskell的平台2012.4.0.0的文档,我看到从haskell2010System.IO模块。并且该模块似乎不包含hSetEncoding

但是不要绝望,似乎也可以从其中包含hSetEncoding基地System.IO

所以我猜你只需要确保你使用来自基地System.IO,而不是从haskell2010。

1

天啊!

好的,我只是想通了。

  1. 它似乎有包,这两个出口System.IO - 在base包和haskell2010包。
  2. 该模块的两个版本是不同。具体而言,只有来自base的模块具有所有字符编码内容。
  3. 当您转到本地安装的模块索引时,它仅显示haskell2010中包含的System.IO的版本 - 没有全部字符编码内容。

这似乎看到base版本的唯一方法是单击从base出口一些其他的模块上,然后单击“目录”,然后从那里导航到System.IO然后它显示你正确的模块!

反直觉,很多? O_O

好了,我发现我现在的功能,而人,黑线鳕也许应该做处理这种模糊的边缘情况下更好的工作......

+0

嗯,_my_本地安装的模块索引列出了“基本”版本。如果平台的索引列出了'haskellXY'版本,我想你应该告诉平台维护人员这是一个次优选择。 –