Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 是否有任何通用语言支持n+2=3及更高版本?_Function_Math_Object_Programming Languages_Abstraction - Fatal编程技术网

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

Function 是否有任何通用语言支持n+2=3及更高版本?,function,math,object,programming-languages,abstraction,Function,Math,Object,Programming Languages,Abstraction,是否有任何通用语言支持,例如: n + 2 = 3; 以确保除其他事项外,“n”现在可能会读作1,或在其他情况下读作某种程度上但并非完全不确定的值 除此之外,对于一般的算法来说,还有任何可以支持这个概念的东西,例如字符串和数字的混合以及诸如串联、子字符串、数字位旋转等概念。。。并不是因为SOMONE硬编码它到语言中,而是因为语言理解使用它如何工作的知识,你的C++风格类,你的类脚本语言,如对象,存在的功能等。使用这些知识来重新排列事物,这在代数中是很常见的。我想只有Prolog才能做这类事情,

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

n + 2 = 3;
以确保除其他事项外,“n”现在可能会读作1,或在其他情况下读作某种程度上但并非完全不确定的值


除此之外,对于一般的算法来说,还有任何可以支持这个概念的东西,例如字符串和数字的混合以及诸如串联、子字符串、数字位旋转等概念。。。并不是因为SOMONE硬编码它到语言中,而是因为语言理解使用它如何工作的知识,你的C++风格类,你的类脚本语言,如对象,存在的功能等。使用这些知识来重新排列事物,这在代数中是很常见的。

我想只有Prolog才能做这类事情,只计算已知的编程语言。

我想只有Prolog才能做这类事情,只计算已知的编程语言。

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


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

通用语言之所以被称为通用语言是有原因的。你不能用他们解决数学问题


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

当然:如果我没记错的话,Algol 60声称支持这种特殊情况。。这已经有一段时间了:然而,只有简单的线性情况,这是没有用的,因为它很容易从你的大脑两侧减去常数


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

当然:如果我没有记错,Algol 60声称支持这种特殊情况。。这已经有一段时间了:然而,只有简单的线性情况,这是没有用的,因为它很容易从你的大脑两侧减去常数

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

Haskell有所谓的n+k模式,例如,您可以将阶乘函数编写为:

fac 0     =  1
fac (n+1) = (n+1) * fac n
有些人现在认为这是一个坏主意,并从Haskell 98中弃用的语言规范中删除,在Haskell 2010中删除。但是Haskell的未来版本正在开发一种更复杂、更通用的形式:

-参见“N+K模式”一节,Haskell有所谓的N+K模式,例如,您可以将阶乘函数编写为:

fac 0     =  1
fac (n+1) = (n+1) * fac n
有些人现在认为这是一个坏主意,并从Haskell 98中弃用的语言规范中删除,在Haskell 2010中删除。但是Haskell的未来版本正在开发一种更复杂、更通用的形式:


-请参阅N+K模式部分

这是一个不应该出现在语言中的糟糕功能。Haskell有n+k模式,但没有人喜欢它们。读这篇文章可能会有帮助:Pubby,n+k模式只与加法有关,还是它们允许这样的关系。第一个答案似乎是,只有Prolog可以做这种事情。@Pubby:Haskell从2010年起不再支持n+k模式。这是一个不好的特性,不应该在语言中出现。Haskell有n+k模式,但没有人喜欢它们。读这篇文章可能会有帮助:Pubby,n+k模式只与加法有关,还是它们允许这样的关系。第一个答案似乎是只有Prolog可以做这类事情。@Pubby:Haskell从2010年起不再支持n+k模式。你能告诉我任何显示抽象模拟的东西吗?例如Prolog中的数据结构,尽管ofc的问题必须解决为一个逻辑编程语言通常可以做到这一点,我相信Prolog是一种逻辑编程语言。尽管少数人可能不同意,但逻辑编程语言在很大程度上并不被认为是“通用的”。在逻辑语言中执行某些甚至是简单计算的最佳方法,由于回溯等原因,需要进行组合上不可信的子计算。这并不是说它们没有自己的位置,但在某些情况下,它们的效率相对较低。你能给我指一下任何显示抽象模拟的东西吗?例如,prolog中的数据结构。虽然ofc的问题必须解决,但逻辑编程语言一般都能做到这一点,我相信Prol
og是一种逻辑编程语言。尽管少数人可能不同意,但逻辑编程语言在很大程度上并不被认为是“通用的”。在逻辑语言中执行某些甚至是简单计算的最佳方法,由于回溯等原因,需要进行组合上不可信的子计算。这并不是说他们没有自己的位置,但在某些情况下,他们的效率相对较低。我说的是关于安排事情的代数式推理,尽管在给定的例子中,有些幕后的推理可以而且可能已经完成了任何事情,而不仅仅是数学中使用的类型。例如,面向对象编程中的对象与用户的操作有关,而不仅仅是语言设计者所指定的。恐怕我不明白你刚才所说的。对不起,我是认真的。另外,我的回答的前半部分是这样的:编程时不使用代数方法。无论语言是否适合这样做,都会导致难以置信的膨胀和复杂性。n+x=y是人类的问题。计算机需要知道的是n=y-x。如果你知道,为什么不这样编码呢。如果你不这样做,首先试着理解你想要计算机做什么,而不是试图让计算机解决人类的问题,它通常很难解决。你知道像声明式编程这样的概念吗?许多应用这种风格的语言试图通过描述程序应该完成什么而不是描述如何完成它来最小化或消除副作用。许多函数式语言都使用这种方法。我相信您可以理解num1.addnum2和num1+num2可能是等价的,但还有许多其他操作不是以同样的方式进行数学运算的,例如string1.substring4,2或node.add_parentp,但同样的原则也适用于重新排列。n+x=y不是程序应该完成的,而是程序必须解决的问题。不完全一样。我问题的最后一半是关于这个。我说的是关于安排事情的代数式推理,尽管在给定的例子中,有些幕后的推理可以而且可能已经完成了任何事情,而不仅仅是数学中使用的类型。例如,面向对象编程中的对象与用户的操作有关,而不仅仅是语言设计者所指定的。恐怕我不明白你刚才所说的。对不起,我是认真的。另外,我的回答的前半部分是这样的:编程时不使用代数方法。无论语言是否适合这样做,都会导致难以置信的膨胀和复杂性。n+x=y是人类的问题。计算机需要知道的是n=y-x。如果你知道,为什么不这样编码呢。如果你不这样做,首先试着理解你想要计算机做什么,而不是试图让计算机解决人类的问题,它通常很难解决。你知道像声明式编程这样的概念吗?许多应用这种风格的语言试图通过描述程序应该完成什么而不是描述如何完成它来最小化或消除副作用。许多函数式语言都使用这种方法。我相信您可以理解num1.addnum2和num1+num2可能是等价的,但还有许多其他操作不是以同样的方式进行数学运算的,例如string1.substring4,2或node.add_parentp,但同样的原则也适用于重新排列。n+x=y不是程序应该完成的,而是程序必须解决的问题。不完全一样。