Functional programming 函数式编程类似于自修改代码吗?

Functional programming 函数式编程类似于自修改代码吗?,functional-programming,self-modifying,purely-functional,Functional Programming,Self Modifying,Purely Functional,似乎有时函数程序中的代码会接受其他代码(函数)作为参数,并对其进行修改并返回以供执行。它似乎类似于自修改代码。这是否意味着功能程序的紧凑性是由允许极其紧凑的自修改程序的相同原因造成的?欧内斯特·弗里德曼·希尔可能是正确的,这个问题不属于这里,但这里有一个答案: 我会说:不 一种语言可以通过多种方式允许自修改代码。最灵活的方法是能够在内存中的任意位置翻转任意位。(这里有一个经典的故事:)但自我修正的方法不必表现出如此危险的自由。在普通的Lisp中,编写构造Lisp代码并对其求值的代码很容易,但这一

似乎有时函数程序中的代码会接受其他代码(函数)作为参数,并对其进行修改并返回以供执行。它似乎类似于自修改代码。这是否意味着功能程序的紧凑性是由允许极其紧凑的自修改程序的相同原因造成的?

欧内斯特·弗里德曼·希尔可能是正确的,这个问题不属于这里,但这里有一个答案:

我会说:不

一种语言可以通过多种方式允许自修改代码。最灵活的方法是能够在内存中的任意位置翻转任意位。(这里有一个经典的故事:)但自我修正的方法不必表现出如此危险的自由。在普通的Lisp中,编写构造Lisp代码并对其求值的代码很容易,但这一切都在Lisp的约束范围内,不一定更紧凑。在Java中,您可以使用反射进行某些类型的“自我修改”,但这通常比常规Java用法更详细

另外,请记住,在某些类型的面向对象方法和函数式编程方法之间实际上有一条细线。两者都允许您将可执行内容和数据打包在一起。OO通过将方法附加到对象来实现,而函数式语言通过使用闭包来捕获数据来实现。因此,如果函数式语言是自修改的,那么Java也是。但是Java通常不被认为是一种自我修改的语言(反射除外),Java代码通常是冗长的。(顺便说一句,Java的设计者之一Guy Steele也是设计Lisp方言方案的人之一,Lisp方言方案是一种比普通Lisp更纯粹的函数式语言,目的是为了试验面向对象编程!我相信这个想法是使用闭包构造不同的面向对象语言结构。)


警告:我已经有一段时间没有做过任何核心Java编程了,可能有一些与此问题相关的语言特性我不知道。

欧内斯特·弗里德曼·希尔(Ernest Friedman Hill)可能是正确的,这个问题不属于这里,但这里有一个答案:

我会说:不

一种语言可以通过多种方式允许自修改代码。最灵活的方法是能够在内存中的任意位置翻转任意位。(这里有一个经典的故事:)但自我修正的方法不必表现出如此危险的自由。在普通的Lisp中,编写构造Lisp代码并对其求值的代码很容易,但这一切都在Lisp的约束范围内,不一定更紧凑。在Java中,您可以使用反射进行某些类型的“自我修改”,但这通常比常规Java用法更详细

另外,请记住,在某些类型的面向对象方法和函数式编程方法之间实际上有一条细线。两者都允许您将可执行内容和数据打包在一起。OO通过将方法附加到对象来实现,而函数式语言通过使用闭包来捕获数据来实现。因此,如果函数式语言是自修改的,那么Java也是。但是Java通常不被认为是一种自我修改的语言(反射除外),Java代码通常是冗长的。(顺便说一句,Java的设计者之一Guy Steele也是设计Lisp方言方案的人之一,Lisp方言方案是一种比普通Lisp更纯粹的函数式语言,目的是为了试验面向对象编程!我相信这个想法是使用闭包构造不同的面向对象语言结构。)


警告:我已经有一段时间没有做过任何核心Java编程了,可能有一些语言功能与这个问题相关,但我不知道。

这是一个很好的问题,但我认为这是一个刚刚结束的讨论问题。谷歌“同象语言”有人可以投票重新打开吗?我已经试过了这是一个很好的问题,但我认为这是一个刚刚结束的讨论问题?我已经试过了,这不是正确的答案,但由于stackoverflow监督员会阻止回答,因此我会接受它作为对您尝试回答的感谢。谢谢@agksmehx,我向那些自愿让事情顺利进行的好人道歉。这不是正确的答案,但由于stackoverflow监管机构会阻止回答这个问题,我会接受它作为对您尝试回答的感谢。谢谢@agksmehx,我向那些自愿让这里一切顺利的好人道歉。