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

Haskell、Hackage、GHC和生产力。如何解决一个真实的例子?,haskell,ghc,hackage,Haskell,Ghc,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"

我不知道解决简单(可能)问题的最佳方法(与黑客有关)

我请求帮助(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"
但是,我无法使用(例如)ghc-7.4安装,但是
压缩字符串
(这取决于)失败

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

我解释了一个具体的真实案例(简单或复杂,无所谓),问题(我请求帮助)是,新手haskeller如何知道选择正确库、ghc正确(平衡)版本的最佳方法,而不会碰壁

我真的很迷茫

真的,非常感谢你的建议


致以最诚挚的问候。

压缩字符串的文档中说:“此软件包已过时。请改用
文本。”


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


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

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

  • 通常最好使用当前维护的包。为了确定当前是否维护了包,我检查了包描述页面上的“上载日期”链接。(当然,有些久经考验的老软件包已经很久没有被修改了,因为它们不需要修改。)

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

  • 通常最好使用有良好文档记录的包。有时候,在Haddock文档中有一个很好的例子说明了如何使用这个包(耶!)。我还将检查包描述页面上的“主页”链接,因为那里通常会有更多文档

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

  • 通常最好使用不需要很多我还没有的包的包,所以我查看包描述页面上的“依赖项”部分


  • 在为任何编程语言选择软件包时,我倾向于遵循以下步骤,而不仅仅是Haskell。

    Daniel给出了这个特定问题的解决方案。我认为你的问题没有一个普遍的答案。cabal dev和virthualenv是包依赖性问题的部分解决方案(尽管在这种特定情况下它们没有帮助)。我认为大部分时间都花在了Haskell项目上,并获得了使用cabal和Hackage的经验。谢谢Daniel,但我的问题不是“紧凑字符串”(“具体问题不相关,但它是……”)。问题是如何最小化查找不兼容(过时,…)的引用,需要检查替代方案。虽然没有具体的解决办法,但安德鲁、沃巴特和唐·斯图尔特的回答对我很有用。无论如何谢谢你!
    `Text.Unicode.Normalization.normalize`