Lisp 最初是作为计算模型的数学符号,以便讲师拥有比图灵机更好的工具。偶然地,事实证明它可以用汇编来实现——因此,lisp,编程语言诞生了。
但我认为这并不是您真正想要的,因为 lisp 描述的计算模型没有循环:而是使用递归。语法源自代数,其中大括号表示评估此结果并替换结果。事实上,lisp 的计算模型基本上是替换——代数本质上就是这样。
事实上,像 Lisp、Haskell 和 Erlang 这样的大多数函数式语言都源自数学。Haskell 实际上是证明 lambda 演算可用于实现类型系统的结果。所以 Haskell 就像 Lisp 一样是从纯数学中诞生的。但同样,语法不是您可能习惯的。
您当然可以向数学家解释 Lisp 和 Haskell 语法,他们会将其视为“游戏”。循环、递归和条件等语言结构可以在游戏规则之外被证明,而不是像其他语言那样盲目地实现。这将带您进入组合电子学领域,这是数学的另一个分支。事实上,在组合电子学中,即使是数字的概念也可以从游戏规则中构建出来,而不是作为语言的原生部分(谷歌教堂数字)。
如果你愿意,可以看看 Lisp/Scheme、Erlang 和 Haskell。Erlang 特别具有与您想要的语法接近的语法:
add(a,b) -> a + b
但我的建议是用类似 C 的伪代码编写。它是编程语言中最小的公分母。具有相当容易理解和清洁的语法。函数语法甚至来源于数学中的函数。还记得f(x)
吗?
另外,数学家习惯于编写 C,统计学家习惯于编写 C(尽管他们通常更喜欢 R),物理学家习惯于编写 C,程序员至少习惯于看 C(我认识一些从未触摸 C)。
实际上,擦掉它。您提到您的目标受众是统计学家。写在R