8

我目前的主要编程语言是 python。我喜欢它的很多地方,但我也喜欢函数式语言。不足以在其中做一个完整的程序,但对于某些功能来说绝对是,这很适合功能模具。

当然 .NET 在这方面是惊人的,同时拥有 ironpython 和 F#。但考虑到 Ironpython 对科学 Python 生态系统的支持在我上次检查时仍然不可靠,.NET 对我来说不是一个选择。我对明显缺乏促进 cpython 和 Haskell 之间互操作的工具感到有点震惊。它们都是拥有大型社区的成熟语言,这对我来说似乎很合适。

他们的架构是否有一些东西让他们不兼容而我错过了,或者这只是一些很棒的东西仍在等待发生?

澄清; 那里有一些半生不熟的项目,但我在想一些与 Weave、pycuda 或 boost 的令人敬畏相似的东西。只需几个注释即可自动化互操作中固有的所有管道。

4

4 回答 4

2

另一种方法是使用 unix 管道,只需编写一个 Haskell 程序,还编写一个 Python 程序,让它们通过文本进行通信。Haskell 和 Python 甚至共享相同的列表语法,因此很容易将数据从一个管道传输到另一个。

于 2013-07-25T17:28:32.383 回答
0

我认为,如果不考虑面向对象和命令式语言相对于函数式语言的惯性,对这个问题的任何回答都是疏忽的。考虑以下情况,首先是函数式语言的教授频率几乎没有中学、大学或研究生阶段的面向对象或命令式语言的频率。正如用户所提到的,作为程序员,在选择语言方面有很大的动力。例如,在一所四年制大学的典型 CS 学位课程中,一个人可能会学习几种语言,而且很可能没有一种是函数式语言。然后这个典型的毕业生将继续在工业界工作,在每周为工作编程 40 多个小时之后,很难再花时间去,不仅要学习一门全新的语言,还要学习一种与现有语言完全不同的语言。除此之外,还有一个缺点是函数式语言在工业中的用处不如面向对象或命令式语言那么有用。可以看出,鉴于目前的状态,Python 和 Haskell 之间的互操作性并不是某些程序员所希望的,这是可以理解的。

于 2013-04-14T00:30:57.647 回答
0

如果你要使用 Haskell 到 Python 的绑定,你会在每种语言中做什么?

例如,如果您考虑绑定 C 和 Python,那么当您需要提高速度时使用 C,或者当您需要推送位时使用 C,并且当您想要表达和简洁时使用 Python。通常你有两种语言,一种用于大多数逻辑,另一种可以为了速度而降级,但要以清晰为代价。语言之间的差距越大,您从切换中获得的收益就越多。

如果我们要绑定 Haskell 和 Python,那么你会从中得到什么就不太清楚了。我不会仅仅为了速度而从 Python 掉入 Haskell,因为 Haskell 虽然速度快,但不如 C 快。但是如果我使用 Haskell,我什么时候会使用 Python?Python 并不比 Haskell 更具表现力,不像比较 C 和 Python。

我认为大多数时候,只使用import functools并在 Python 中进行功能编程会更容易,而不必将对象转换为一些 Haskell 表示,做一些工作,然后再将其转换回来。

不过,如果你真的想要它,Cython 会让编写 Haskell 的 FFI 可以使用的函数变得容易。

于 2013-07-25T15:50:58.693 回答
0

参考:

他们的架构是否有一些东西让他们不兼容而我错过了,或者这只是一些很棒的东西仍在等待发生?

我认为这是关于使用这些语言的人:

想要同时做 Haskell 和 Python 的人并不多。

  1. 要同时使用两种语言(如 Haskell 和 Python),您可以通过 C 接口或创建两种语言都可以使用的协议。

    两者都相当先进,限制了能够做到这一点的人数。当然,也会有一些折衷,这使得很难使用两种语言的全部功能。

  2. 我正在使用 Python,虽然我知道一些 Haskell,但我不会对其进行编程。我有点陷入面向对象的困境,告诉我有一天一个问题会决定我在 Haskell 中比在 python 中更好地解决它。这个问题还没有出现,因为我的第一个想法是:我知道如何在 Python 中做到这一点。我认为其他“专家”也面临这个问题。

  3. 你开始用一种语言思考。我认为 Haskell 的功能风格完全不同,没有副作用。要进入这种想法,我需要忘记或不使用我的 Python 知识。在这两种思维方式之间切换需要一些力量。

总结一下:因为这两种语言不是那么接近,它们分开。两者都很难,也没有很多或简单的方法来练习两者。

于 2013-04-13T18:39:46.540 回答