Haskell,Hackage,GHC和生产力。如何解决一个真实的例子?

时间:2012-10-27 11:59:56

标签: haskell ghc hackage

我不知道解决简单(可能)问题的最佳方法(与hackage相关)。

我向它寻求帮助(http://stackoverflow.com/questions/12841599/haskell-hackage-ghc-and-productivity-what-to-do),但我不清楚解释。

今天,我遇到了这个亲属问题。

具体问题无关紧要,但是:

`Write a function that, given a string, remove diacritics.`

示例:

`simpleWord "Cigüeñal" <-> "Ciguenal"

正确的方法(我认为)是使用标准的Unicode规范化。在某些语言/框架(.Net,PHP,Python,...)中存在一些相关的功能。

在Haskell,感谢hackage社区也存在:

`Text.Unicode.Normalization.normalize`

但是,我无法安装(例如)ghc-7.4但compact-string(取决于)失败。

compact-string的修复存在(compact-string-fix)然后:我不能使用cabal安装(直接)?,我应该下载并修补它吗?我应该寻找另一种功能替代方案吗?大约?

我解释了一个具体的实际案例(简单或复杂,不关心),问题(我请求帮助)是一个新手哈克勒,怎么能知道选择正确库的最佳方法,ghc正确(平衡) )版本,没有撞墙。

我真的迷失了。

真的,非常感谢你的任何建议。

最好的问候。

2 个答案:

答案 0 :(得分:11)

compact-string的文档说:“此软件包已过时。请改用text。”。

text的文档说:“要使用扩展且非常丰富的函数系列来处理Unicode文本(包括规范化,正则表达式,非标准编码,文本破坏和区域设置),请参阅text-icu包。“。

text-icu的文档显示它成功构建于GHC 7.4并支持Unicode规范化。

答案 1 :(得分:1)

这是我在决定使用哪些软件包时遵循的一般过程。首先,我尝试识别满足我需求的多个包。然后,根据下面列出的标准,我会仔细查看每个包,以确定哪些包最适合我。

  1. 通常最好使用当前维护的包。要确定当前是否维护包,请检查包描述页面上的“上载日期”链接。 (当然,有些旧的经过验证的软件包由于不需要修改而长期没有修改过。)

  2. 使用成熟的软件包通常会更好,所以我检查软件包描述页面上的版本号。版本号为7.3.5的软件包可能比0.1版软件包更成熟。

  3. 通常最好使用文档齐全的软件包。有时在Haddock文档中有一个如何使用该包的好例子(耶!)。我还会检查包描述页面上的“主页”链接,因为那里通常会有更多文档。

  4. 通常最好使用流行的软件包,因为任何问题都可能很快得到解决,而其他用户可以回答问题。我通常会进行谷歌搜索,看看在Haskell邮件列表和StackOverflow上最常提到的包。

  5. 通常最好使用不需要很多软件包的软件包,所以我检查软件包描述页面上的“依赖项”部分。

  6. 在为任何编程语言选择包时,我倾向于遵循此过程,而不仅仅是Haskell。