lisp学习笔记1
Posted escapist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lisp学习笔记1相关的知识,希望对你有一定的参考价值。
lisp程序员能够并且经常编写一些能够写程序的程序,对于程序生成程序的这种特性,
因为lisp是主流语言中唯一一个提供一些方便的抽象来让你完成这个任务的语言,所以
lisp是主流语言中唯一一个广泛运用这个特性的语言。
编程其实就是寻求编写最优美的程序 ---高德纳
lisp黑客精神可以用两句话概括:编程应该是有趣的,程序应该是优美的。
约翰麦卡锡和他的学生于1958年展开lisp的初次实现工作,lisp是继Fortran之后,仍在使用
的最古老的的程序语言,他仍然走在程序语言技术的最前面,懂lisp的程序员会告诉你,某种
东西使得lisp与众不同。
lisp与众不同的部分语言是它被设计成能够自己进化,当新的抽象概念风行时,这些新概念
在lisp中是最容易实现的,lisp就像DNA一样,永远不会过时。
程序语言教你不要做他没有提供的事情。因为可扩展的思想深植于lisp当中,使得lisp成为实现可扩展
软件的理想语言。
lisp是交互式的语言,任何系统都包含一个交互式的前端叫做顶层
数字对自身求值
CL-USER> 1
1
CL-USER>(+ 2 3)
5
在上述表达式中 + 是操作符 2 和 3 是参数
lisp使用的是波兰式 这是lisp最美好的东西
CL-USER>(+ 3 4 5) 就算有三个参数 也可以只使用一次 操作符 而
大多数编程语言 必须要写成这样 3 + 4 +5
前缀表达式的灵活性显著,lisp中 + 可以接受任意数目的参数,包括没有参数
CL-USER>(+)
0
因为操作符可以接收任意数目的参数,我们需要用括号来注明开始和结束
另一个lisp表示法美丽的地方是:它就是这么简单,所有lisp表达式要么是 1 这样的数
原子(atom),要么是包在括号中,由零个或者多个表达式组成的列表
在lisp中我们使用单一的表示法来表达所有的概念。
lisp求值规则:
1.首先对参数从左到右求值
2.参数的值传入以操作符命名的函数
如果参数本身也是函数调用,也遵循上面的规则
不是所有的操作符都是函数,但大部分是,而函数调用都是这样子求值的
一个不遵循lisp求值规则的 操作符是 quote 什么都不做,原样返回
CL-USER> (quote (+ 2 3))
(+ 2 3)
为了方便起见 使用 ‘ 缩写
作用是作为一种保护表达式被求值的方式
数据
整数(integer)
字符串(string) 使用双引号包裹
符号(symbol) 符号不对自身求值 通常要用 ‘ 引用
CL-USER>‘article
ARTICLE 通常他们被转换成大写
‘ 可以保护整个表达式不被求值
以上是关于lisp学习笔记1的主要内容,如果未能解决你的问题,请参考以下文章