【问题标题】:Functional programming with very math-like syntax具有非常类似于数学的语法的函数式编程
【发布时间】:2013-02-01 07:30:53
【问题描述】:

我的背景是计算机科学,专门从事命令式编程(C/C++、Python)。由于我目前正在努力为论文的某些算法提出正式的描述,因此我想知道是否有一种函数式编程语言可以提供尽可能接近数学符号的语法;例如,类似于 Event-B 提供的功能(请参阅http://i.stack.imgur.com/JaXu0.png 的屏幕截图),但没有 Event-B 的开销(状态机等)。

我的用例很简单:我希望能够想出一个类似的公式

并以尽可能接近的语法将其输入到编程语言中,以使用不同的输入对其进行评估,并检查它是否真的符合我的预期。因此,性能或可重用性对我来说不是问题。

我确实意识到我可以在任何编程语言(例如 Python)中实现这些函数,但这再次要求我在将它们翻译成该语言时解释它们,我很可能会犯我已经犯过的相同的解释错误当想出原始公式时。

【问题讨论】:

  • def initial_plus(r): return set([initial(r)]).union(*[initial_plus(r2) for r2 in regions(initial(r))]) 在 Python 中与数学公式不够接近?
  • @MvG:理论上它足够接近,但由于我的背景是 CS 而不是数学,我担心使用 Python 我可能会错过 Python(可能是我的)和“传统”之间的细微差别数学语义。
  • 因此,您不仅需要一种 允许 语法的 language,还需要一个 library (这可能与语言一起提供)支持这样的语法。从您的问题来看,这并不明显,因此您可以更明确地说明这一点。也就是说,我怀疑是否存在与数学符号没有细微差别的任何语言。该陈述本身包括数学符号,因为其中很多取决于上下文。

标签: math functional-programming


【解决方案1】:

没有具有 2D 语法的主流语言(例如联合操作下的子集操作)。

然而,有许多语言带有 unicode 运算符,例如Haskell

【讨论】:

    【解决方案2】:

    Maple 允许使用通常的数学 2D 语法,进行符号运算,还允许将结果转换为 C 或 FORTRAN。此功能使其作为开发人员工具适用于规范包含一些复杂数学的任务。

    Matlab 允许使用 2D 语法以图形方式进行编程,但与 Maple 不同的是,它会将所有内容锁定在其环境中,因此更像是一种研究工具。

    【讨论】:

    • 谢谢,Maple 看起来很有前途,我会试一试的。
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2020-11-17
    • 2015-10-04
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多