Haskell会不会成为我的任务的好选择?

时间:2011-02-11 07:23:09

标签: programming-languages haskell functional-programming ocaml

我正在开始一个新项目,不知道使用哪种语言。

我的'必须'要求是:

  1. 能够在本机上运行Windows / LinuxMacO(本机可执行文件) - 用户应该能够运行.exe(例如在Windows上)并查看结果。
  2. 没有运行时/解释器(没有JVM,CLR等) - 一个文件下载应该足以运行应用程序。
  3. 完全支持Unicode。
  4. 能够操作OS线程(创建它们,在多核CPU上并行运行多个任务等)。
  5. 相当快(Python级别的性能和更好)。
  6. 使用某种标准库来执行低级,平凡的任务。
  7. 不是很小众,并且有一些社区可以提问。
  8. 我很高兴有'要求':

    1. 语言应该正常运作。
    2. 它应具有良好的字符串操作功能(不一定是正则表达式)。
    3. 不是很难学。
    4. 我现在正在考虑Haskell,但也要记住OCaml。

      更新: 此应用程序旨在成为一个简单的语言解析和操作实用程序。

      如果我的选择正确,请提供建议。

4 个答案:

答案 0 :(得分:14)

Haskell中:

1:它在Linux,Windows和OS X上运行,在许多情况下无需更改源代码。

2:生成本机二进制文件。没有VM。

3:完全支持Unicode。支持所有UTF变体。

4:完全线程支持,如果你只想要并行化,那么你可以使用“par”,100%保证它只影响所用的时间而不是语义。

5:与C一样快,虽然可能需要进行一些调整,但目前所需的技能相当模糊,而且显然微小的调整可能会产生多个数量级的影响。

6:包含标准库,“Hackage”包含更多包,包括一系列解析器库。

7:IRC(#haskell)和此处的友好社区。

编辑:关于“很高兴有点”:

1:Haskell是一种毫不妥协的纯函数式语言。

2:它通常具有良好的字符串操作,如果你需要它们的正则表达式。正如有人在后来的评论中所说,要注意内置“String”类型的效率(它将字符串表示为字符的链接列表),但是ByteString和Text库将为您解决这个问题。

3:难以学习吗?它远不如C ++复杂,可能比Java甚至Python更简单。但其纯粹的功能性意味着它与命令式语言非常不同。问题不在于学习Haskell作为学习困难的思维模式。

答案 1 :(得分:4)

Haskell听起来很完美。 GHC在OS X,Linux和Windows上生成本机代码就好了,并且通常具有比Python好得多的性能(对于很多东西,而不是所有东西)。

唯一奇怪的要求是需要OS线程。 GHC生成的程序使用轻量级线程,它比OS线程执行得更好,并且比pthreads更容易使用。

Haskell也非常适合语言分析,使用像Parsec这样的库。

我们也非常了解社区围绕Haskell的字符串和帮助。

答案 2 :(得分:2)

对你的第三个好人:看看Real World Haskell,它是免费的,非常好的介绍,包括你需要的所有要点的介绍。 (例如并行计算,字符串解析等)。

答案 3 :(得分:1)

也许'很高兴':

  1. 是纯粹的功能和懒惰的评价。
  2. 是(如前所述)。
  3. 取决于你,我认为这很难学, 但是给你一些很大的好处。