任何通用语言是否支持n + 2 = 3及更高版本?

时间:2011-12-21 23:01:08

标签: function math object programming-languages abstraction

是否支持任何通用语言,例如:

n + 2 = 3;

确保可能的其他内容现在可以读作1,或者在其他情况下作为一个有点但不是不确定的值。

除此之外,还有任何可以支持algorythmic东西的概念,例如字符串和数字的混合与概念,如连接,子串,数字按位旋转等...不是因为somone硬编码到languege但是因为languege了解如何使用它的知识(你的C ++风格类,你的无类脚本语言,如对象,存在的函数等等),并使用这些知识来重新排列事物,这在代数中很常见。 / p>

4 个答案:

答案 0 :(得分:4)

我想只有Prolog可以做那种事情(只计算众所周知的编程语言)。

答案 1 :(得分:1)

当然:Algol 60声称支持这种特殊情况,如果我没记错的话(不确定..它已经有一段时间:)但是只有简单的线性情况,这是没用的,因为它很容易从减去常数双方都在脑海中。

然而,许多现代语言给编译器带来了很难在类型系统方面解决的问题。许多人允许提出具有解决方案但编译器无法解决的打字问题,对于进行类型推断的编译器尤其如此。

答案 2 :(得分:1)

Haskell 已经所谓的" n-plus-k"模式,例如,您可以将阶乘函数编写为:

fac 0     =  1
fac (n+1) = (n+1) * fac n

现在这被视为一个坏主意(一些reasons here),并从语言规范中删除(在Haskell98中弃用并在Haskell2010中删除)。但!对于未来版本的Haskell,有一种更复杂,更通用的形式:

View Patterns - 请参阅" N + K模式"

部分

答案 3 :(得分:0)

通用语言因某种原因被称为通用语言。你不解决他们的数学问题。

我所知道的GP语言都不允许在赋值左侧使用表达式。 Erlang有模式匹配,但这是完全不同的事情。