Lisp
Lisp发表于1960,是由数学家约翰·麦卡锡发明的。
在计算机有所发展时,数学家们对人工智能有着极大的兴趣,觉得可以实现一个共通的方法,使计算机能够处理链表中的符号数据,允许语言的处理、信息存入和检索、定理证明的过程机器化。
约翰·麦卡锡于1958年回到麻省理工,和Marvin Minsky组成了人工智能项目。开展一个表处理软件系统的工作,尔后推动了表处理语言LISP的诞生
lisp是世界上第二古老的程序语言,难以想象的是,这么多年过去了,它仍焕发生机,在人工智能上独具风骚。
安装
这里安装的是clisp,我的是Debain Linux
在Debian中:
sudo apt install clisp
在macOS中
使用 MacPorts sudo port install clisp 或 使用 Homebrew brew install clisp
在windows就上官网下载就好
函数式语言
LISP是函数式编程,所有的输入都被认为是函数,函数就要有函数名,参数和表达式。
(+ 1 2) 3
就比如上面这个,‘+’是一个 加法函数,1和2成为了这个函数的参数,(加法函数由于是lisp自带的基本函数,所以它的表达式(或者说计算式)早以被定义好了,所以咱们并没有看到它的计算式是什么样的)
这样就构成了一个表达式。回车返回3。
基本格式:(它可以接受很多参数)
(函数名 参数1 参数2 ...)
lisp 函数式语言 处理的是列表
Lisp 的基本形式是 表,基本单元是表达式,就比如上面这个,它就是一个列表,它的表达式由 加法函数+、参数‘1’、‘2’组成。
lisp嘛,List Processing --> 列表处理.
具体以后再说。
它是函数语言的同时,也是交互式语言(就像python一样)
在命令行中输入 clisp
$ clisp i i i i i i i ooooo o ooooooo ooooo ooooo I I I I I I I 8 8 8 8 8 o 8 8 I \ `+' / I 8 8 8 8 8 8 \ `-+-' / 8 8 8 ooooo 8oooo `-__|__-' 8 8 8 8 8 | 8 o 8 8 o 8 8 ------+------ ooooo 8oooooo ooo8ooo ooooo 8 Welcome to GNU CLISP 2.49.93+ (2018-02-18) <http://clisp.org/> Copyright (c) Bruno Haible, Michael Stoll 1992-1993 Copyright (c) Bruno Haible, Marcus Daniels 1994-1997 Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998 Copyright (c) Bruno Haible, Sam Steingold 1999-2000 Copyright (c) Sam Steingold, Bruno Haible 2001-2018 Type :h and hit Enter for context help. [1]>
你就可以像上面的 (+ 1 2)一样来试试,+ - * /
就比如
(/ 4 4 2 2)
结果发现什么?非常人性化的输出了1/4
当然还可以内嵌列表,如
[1]> (/ (- 4 7) (+ -1 6)) -3/5
求值
我们来理解一下表达式是如何被求值的。
在 Lisp 里, +
是函数,然而如 (+ 2 3)
的表达式,是函数调用。
当 Lisp 对函数调用求值时,它做下列两个步骤:
- 首先从左至右对实参求值。在这个例子当中,实参对自身求值,所以实参的值分别是
2
跟3
。- 实参的值传入以操作符命名的函数。在这个例子当中,将
2
跟3
传给+
函数,返回5
。
如果实参本身是函数调用的话,上述规则同样适用。以下是当 (/ (+ 2 4) (- 2 7))
表达式被求值时的情形:
- Lisp 对
(+ 2 4)
求值:2
求值为2
, 4 求值为 4 ,它们被传给函数 +,返回6
。- Lisp 对
(- 2 7)
求值: 2 求值为 2, 7求值为 7 ,它们被传给函数-
,返回 -5 。- 数值
6
与 -5 被传入函数/
,返回 -6/5 。
但不是所有的 Common Lisp 操作符都是函数,不过大部分是。函数调用都是这么求值。由左至右对实参求值,将它们的数值传入函数,来返回整个表达式的值。这称为 Common Lisp 的求值规则。
标签:函数,Lisp,ooooo,学习,CLISP,求值,实参,表达式 From: https://www.cnblogs.com/iceshadow/p/17036660.html