Functional programming 证明LISP不起作用

Functional programming 证明LISP不起作用,functional-programming,lisp,procedural-programming,Functional Programming,Lisp,Procedural Programming,我正在和一位同事讨论,他认为LISP是功能性的,而我认为不是。虽然我承认LISP程序可以在功能上编写,但LISP并不是“纯粹”功能性的(我相信Haskell所说的方式) 我不是lisp专家(事实上,我是lisp初学者)。有没有人能给我提供一个lisp代码片段,我可以向他展示它毫无疑问是不起作用的?谢谢。约翰·麦卡锡(John MCcarthy)在1958年编写的LISP原稿纯粹是功能性的。论文中根本没有副作用,因为它没有阅读,打印或设置,所以它确实是一种纯粹的功能性语言。不过,当他们制作解释器时

我正在和一位同事讨论,他认为LISP是功能性的,而我认为不是。虽然我承认LISP程序可以在功能上编写,但LISP并不是“纯粹”功能性的(我相信Haskell所说的方式)


我不是lisp专家(事实上,我是lisp初学者)。有没有人能给我提供一个lisp代码片段,我可以向他展示它毫无疑问是不起作用的?谢谢。

约翰·麦卡锡(John MCcarthy)在1958年编写的LISP原稿纯粹是功能性的。论文中根本没有副作用,因为它没有
阅读
打印
设置
,所以它确实是一种纯粹的功能性语言。不过,当他们制作解释器时,情况发生了变化,因为他们需要某种方式来加载程序、读取结果和
define
,它们可以作为
setq
工作,但您可以以相同的形式定义多个函数

和(由我们所知道的几乎所有编程语言组成)一样,LISP现在也是一种语言。一些LISP语言是函数式的,但大多数是多范式的。有些,比如用于在Playstation上制作的,几乎没有动态性,并且具有堆栈/寄存器之类的绑定,实际上更像是一种使用LISP语法的汇编/静态语言。它肯定不起作用

对于问题中的LISP,我猜您的意思是
公共LISP
,它肯定不是函数式的,而是一种多范式语言,而且由于它不能保证一定能做到,所以您需要使用
循环
,在
方案中
将使用尾部递归。许多公共学家认为,只要它不发生突变,函数就起作用,但在这个观点下,C++也可以具有功能性功能。 具有共享名称空间的Scheme可以完成非常高比例的函数代码,并且通过给它一个不同的函数来处理结果,它可以成为一个具有副作用的函数。我想说,如果你愿意,它可以接近哈斯克尔


副作用是一个真正的F联合语言杀手,但没有它,你的程序就不能真正做任何有用的事情。

你首先需要一个“功能性”的正式定义。。。。然后你需要说服你的朋友这是一个“正确”的定义。或者你可以停止为流行语而争吵,更准确地描述你的意思。例如,您试图指出Lisp允许可变状态?那就说吧!这些问题与Stackoverflow无关。Stackoverflow用于解决实际编程问题。