2013-08-26 48 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'版本,我想你應該告訴平臺維護人員這是一個次優選擇。 –