Lisp语言简介_c++是什么语言

Lisp语言简介_c++是什么语言摘自维基百科,原链接为:http://zh.wikipedia.org/zh/LISP因为Clojure是Lisp的一种的方言,所以我们可以先来了解一下Lisp这个比较小众的编程到底是什么~—–

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

摘自维基百科,原链接为:http://zh.wikipedia.org/zh/LISP

 

因为Clojure是Lisp的一种的方言,所以我们可以先来了解一下Lisp这个比较小众的编程到底是什么~

 

—————————————————————————

 

LISP(全名LISProcessor,即列表处理语言),由约翰·麦卡锡1960年左右创造的一种基于λ演算函数式编程语言

 

LISP有很多种方言,各个实现中的语言不完全一样。1980年代Guy L. Steele编写了Common Lisp试图进行标准化,这个标准被大多数解释器和编译器所接受。在Unix/Linux系统中,还有一种和Emacs一起的Emacs Lisp(而Emacs正是用Lisp作为扩展语言进行功能扩展的)非常流行,并建立了自己的标准。

 

LISP语言的主要现代版本包括Common LispScheme

 

 

基本介绍

 

LISP 是第一個函數型程式語言,区别于C/Java等命令型编程语言。

 

由于历史的原因,Lisp长期以来被认为主要用于AI领域,但Lisp并不是为AI而设计,而是一种通用的编程语言.

 

Lisp的表达式是一个原子(atom)或表(list),原子(atom)又包含符號(symbol)與數值(number);表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如:

abc()(abc xyz)(a b (c) d)

 

最后一个表是由四个元素构成的,其中第三个元素本身也是一个表,這種 list 又稱為嵌套表(nested list)。

 

正如算数表达式 1+1 有值 2 一样,Lisp 中的表达式也有值,如果表达式 e 得出值 v,我们说 e 返回 v。如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元素叫做自变量。

 

 

Lisp 的 7 个公理(基本操作符)

  • 基本操作符1 quote

 

(quote x) 返回 x,我们简记为 ‘x

 

> (quote a)a> ‘aa

 

  • 基本操作符2 atom

 

(atom x) 当 x 是一个原子或者空表时返回原子 t,否则返回空表 ()。在 Lisp 中我们习惯用原子 t 表示真,而用空表 () 表示假。

 

> (atom ‘a)t> (atom ‘(a b c))()> (atom ‘())t

 

现在我们有了第一个需要求出自变量值的操作符,让我们来看看 quote 操作符的作用——通过引用(quote)一个表,我们避免它被求值。一个未被引用的表达式作为自变量,atom 将其视为代码,例如:

 

> (atom (atom ‘a))t

 

这是因为(atom ‘a)的结果(t)被求出,并代入(atom (atom ‘a)),成为(atom t),而这个表达式的结果是t。

 

反之一个被引用的表仅仅被视为表

 

> (atom ‘(atom ‘a))()

 

引用看上去有些奇怪,因为你很难在其它语言中找到类似的概念,但正是这一特征构成了 Lisp 最为与众不同的特点——代码和数据使用相同的结构来表示,而我们用 quote 来区分它们。

 

  • 基本操作符3 eq

 

(eq x y) 当 x 和y 的值相同或者同为空表时返回t,否则返回空表 ()

 

> (eq ‘a ‘a)t> (eq ‘a ‘b)()> (eq ‘() ‘())t

 

  • 基本操作符4 car

 

(car x) 要求 x 是一个表,它返回 x 中的第一个元素,例如:

 

> (car ‘(a b))a

  • 基本操作符5 cdr

 

(cdr x) 同样要求 x 是一个表,它返回x中除第一个元素之外的所有元素组成的表,例如:

 

> (cdr ‘(a b c))(b c)

 

  • 基本操作符6 cons

 

(cons x y) 返回一个cons cell (x y),例如:

 

> (cons ‘a ‘b)(a . b)

 

一个cons cell的第二项如果是另一个cons cell,就表示成表的形式,例如:

(a . (b . c))

 

就表示成

 

(a b . c)

 

若一个cons cell第二项为空,就省略不写,例如:

 

(a . (b . ()))

 

表示为

 

(a b)

 

这样,多重的cons cell就构成了表:

 

> (cons ‘a (cons ‘b (cons ‘c ())))(a b c)

 

  • 基本操作符7 cond

 

(cond (p1 e1) …(pn en)) 的求值规则如下. 对“条件表达式p”依次求值直到有一个返回t. 如果能找到这样的p表达式,相应的“结果表达式e”的值作为整个cond表达式的返回值.

 

> (cond ((eq ‘a ‘b) ‘first) ((atom ‘a) ‘second)) second

 

函数

 

当表达式以七个原始操作符中的五个开头时,它总会对其自变量求值的. 我们称这样的操作符为函数.

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168319.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 信息学奥赛GoC编程测试题题库

    信息学奥赛GoC编程测试题题库在线答题和答案详解请参考https://blog.csdn.net/zhengzyx2040/article/details/118632561一、单选题(15题,每题4分,满分60分)1、GoC的编译+运行的快捷键是()A、F5B、F11C、F8D、F122、GoC程序的源文件扩展名是(),经过编译后生成的可执行文件扩展名是()A、CPPEXEB、EXECPP…

    2022年6月18日
    63
  • js模拟触发touchstart

    js模拟触发touchstartvarbtn=document.querySelectorAll(‘#id’)[0];varevent=document.createEvent(‘Events’);event.initEvent(‘touchstart’,true,true);btn.dispatchEvent(event);

    2022年6月19日
    73
  • 史上最全的Linux常用命令汇总(超全面!超详细!)收藏这一篇就够了!

    这绝对是整理的最全面最详细最认真最适合用来当笔记的Linux终端命令汇总的文章了

    2022年4月6日
    52
  • 【愚公系列】2022年03月 漏洞扫描与利用之AWVS「建议收藏」

    【愚公系列】2022年03月 漏洞扫描与利用之AWVS「建议收藏」实验步骤一首先需要添加一个扫描目标,先不进行登陆操作:设置爬虫扫描开始扫描得出网站目录如果需要账号密码则需要设置方式一:方式二:之后点击“save”,保存后就可以进行扫描备注:FullScan–使用FullScan来发起一个扫描的话,Acunetix会检查所有可能得安全漏洞。HighRishVulnerabilities–这个扫描选项将仅仅只会检查那些对web站点影响最大的缺陷漏洞。Cross-SiteScripting(XSS)–XXS漏洞扫描只会检测跨站

    2022年9月23日
    3
  • 02Windows日志分析[通俗易懂]

    02Windows日志分析[通俗易懂]计算机系统日志作用系统日志是记录系统中硬件、软件中的系统问题信息,同时还可以监视系统中发生的事件用户可以通过日志来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹Windows日志分类Windows系统日志(包括应用程序、安全、安装程序和转发的事件)服务器角色日志应用程序日志服务日志事件日志基本信息该日志主要记录行为当前的日期、时间、用户、计算机、信息来源、事件、类型、分类等信息事件类型及描述事件类型错误出现问题可能会影响触发事件的应用程序或组件外部

    2025年10月1日
    3
  • 狂神说Linux_狂神说博客园

    狂神说Linux_狂神说博客园Linux在服务器端,很多大型项目都是部署在Linux服务器上利用VM + Centos7搭建本地Linux系统你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。概念云服务器就是一个远程电脑Linux中一切皆文件根目录/,所有的文件都挂载在这个节点下/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev : dev是Device(设备

    2022年8月9日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号