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

Nar*_*nka 12 ocaml haskell programming-languages functional-programming

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

我的"必须"要求是:

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

我'很高兴'的要求是:

  1. 语言应该是有用的.
  2. 它应该具有良好的字符串操作功能(不一定是正则表达式).
  3. 不是很难学.

我现在正在考虑Haskell,但也要记住OCaml.

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

如果我的选择是正确的,请建议.

Pau*_*son 14

哈斯克尔:

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作为学习势在必行的思维模式.

  • drvitek:不要忘记[text](http://hackage.haskell.org/package/text)包! (2认同)