首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

哪个标准Common Lisp宏/特殊形式建立名为nil的隐式块?

在Common Lisp中,nil是一个特殊的符号,表示空值或者假值。在Common Lisp中,没有特定的宏或特殊形式来建立名为nil的隐式块。nil只是一个符号,用于表示空值,而不是一个可执行的代码块。因此,没有与nil相关的特殊形式或宏。

在Common Lisp中,可以使用progn特殊形式来创建一个代码块,其中可以包含多个表达式,并按顺序执行。progn的语法如下:

代码语言:lisp
复制
(progn form1 form2 ...)

其中,form1form2等表示要执行的表达式。progn会按照从左到右的顺序依次执行这些表达式,并返回最后一个表达式的值作为整个progn表达式的值。

需要注意的是,nil在Common Lisp中是一个特殊的符号,不应与其他语言中的nullnil等价。在Common Lisp中,nil是一个真正的对象,可以进行各种操作和判断。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Clojure与LispClojure与Lisp

功能和元编程能力是建立在这样基础之上:异常驯服C语言"石头" 或 具有 延展性java语言"木头" ....可是,IBM旗下Fortran表处理语言却未能支援符号运算递归、条件表达式、动态存储分配及回收等功能。...1984年,改良自MacLisp、集各版本大成、跨平台、且被目为事实标准Common Lisp诞生。至1994年,美国国家标准学会(ANSI)对Common Lisp语言进行了标准化。...Lisp无所不包,它既可能是某样表达式缩略形式,也可能是一种新语言编译器。如果你想真正地理解Lisp语言,或者想拓宽你编程视野,那么你必须学习。...如今,在任何具备 Java 虚拟机地方,都可以使用 Lisp 强大功能。 Clojure 是一种函数编程语言 它囊括了函数编程所有精华: 避免了不稳定状态、递归、更高阶函数等。

1.9K30

clojure基础入门(一)

阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上Lisp方言,属于函数编程范式,它和java可以方便互相调用,这样开发程序可以很好结合java和clojure...函数编程中以函数为第一类对象,其小括号后面第一个元素被Clojure解释器当成一个函数或,其后面的都会被当成参数,如上"hello world"是被当成参数传入str函数进行输出。...这里有三层嵌套,首先(= age 18)来判断返回是否等于18,作为if判断该返回哪个字符串依据,再根据if确定字符串作为函数返回值。...注意if是不是函数或,而是叫做special form(特殊形式),而且没有else,用空白或换行即表示else,不用显return,clojure会将最后一个表示值作为函数返回值。...,nil?。 测试数字谓词有:even?,neg?,odd?,pos?,zero?。

1.3K40
  • clojure基础入门(一)

    阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上Lisp方言,属于函数编程范式,它和java可以方便互相调用,这样开发程序可以很好结合java和clojure...函数编程中以函数为第一类对象,其小括号后面第一个元素被Clojure解释器当成一个函数或,其后面的都会被当成参数,如上"hello world"是被当成参数传入str函数进行输出。...这里有三层嵌套,首先(= age 18)来判断返回是否等于18,作为if判断该返回哪个字符串依据,再根据if确定字符串作为函数返回值。...注意if是不是函数或,而是叫做special form(特殊形式),而且没有else,用空白或换行即表示else,不用显return,clojure会将最后一个表示值作为函数返回值。...,nil?。 测试数字谓词有:even?,neg?,odd?,pos?,zero?。

    1.5K30

    一文读懂基于 Yaegi 解释器开发可热插拔 Traefik 插件

    它支持动态类型、高阶函数、闭包、扩展等 Lisp 特性,并能够直接调用 Go 语言函数和方法。...6、Golo:Golo 是一个基于 Go 语言实现 Lisp 解释器。它支持大多数 Lisp 特性,包括扩展和动态类型。...与上述相比较,Golo 是一个更加复杂和功能更为丰富 Lisp 方言,其语法和特性与 Common Lisp 有很多相似之处。...它支持静态类型、多重继承、泛型、扩展等特性,并且具有内置模块系统和 REPL(交互解释器)。...总之,Yaegi 是一个功能强大、灵活和交互 Go 语言解释器,可以帮助开发人员快速测试和验证代码,同时具有内置标准库和支持调用外部 Go 包功能。

    1.7K51

    深入浅出 Babel 下篇:既生 Plugin 何生 Macros

    文本替换很容易理解、实现也简单,因为它们只是纯文本替换, 换句话说它就像‘文本编辑器’。所以相对而言,这种形式能力有限,比如它不会检验语法是否合法, 使用它经常会出现问题。...所以反过来推导,之所以C语言需要,正是因为C语言表达能力太弱了。 语法扩展 真正起源于Lisp. 这个得益于Lisp语言本身一些特性: ? 它语法非常简单。...最后总结是Elixir官方教程里面的一句话:显好于,清晰代码优于简洁代码(Clear code is better than concise code) 能力越大、责任越大。...这个对于CRA这种不推荐配置构建脚本工具来说很有帮助 由转换为了显。上一节就说了“显好于”。...,Babel Macro 可以做很多有意思东西,查看《Awesome babel macros》。不过要谨记:显好于,清晰代码优于简洁代码

    1.5K31

    一名ClojurianEmacs配置

    这就不得不提起Clojure这门lisp方言,出于对lisp和函数编程痴迷,我选择了基于JVMClojure作为自己偏好语言,而emacs天生为lisp而生。...按照惯例,我在~/.emacs.d目录下建立一个lisp目录用于存放所有自定义模块文件,随后在init.el中加入下面这句代码,意在把lisp目录加到emacs加载路径列表里。...幸运是,有人已经很好地解决了这部分问题,use-package就是非常好用包,它将包配置和包定义聚合到了一,并且保证包一定会安装在你系统当中。...当你正在编译文件时候,包中就会原地展开,然后被eval-when-compile加载进内存并被编译成字节码,供后续解析器执行。...同样地,我们在lisp目录下新建一个名为init-clojure-cider.el,内容如下: (require 'init-clojure) (require 'company) (use-package

    2.7K20

    各种编程语言对尾递归支持

    在递归中,如果该函数递归形式表现在函数返回时候,则称之为尾递归。   ...Common Lisp   测完Scheme,再来测Scheme本家兄弟,另外一种Lisp——Common Lisp   先用Common Lisp实现add,因为Common Lisp将数据和过程用不同命名空间...但是似乎也改变了Lisp味道,do显然此处只能在设计编译器、解释器时候就得单独实现,虽然按理Lisp下这些都应该是,但是无论用如何将函数编程映射为显示迭代,因为尾clisp递归优化不支持,则无法和系统提供...sbcl是Common Lisp另外一个实现,在这个实现中,我们使用第一个add函数版本,没有发生崩栈。...也终于给了我们一个更为靠谱Common Lisp实现。

    2.7K20

    Lisp本质(The Nature of Lisp)学习思考

    它能起到相同作用, 而形式更加优美, 也不用担心有makefile那样可恨空格问题。...Lisp内置函数集十分精简, 只包含了十分必要部分。剩下函数都是作为标准库来实现Lisp 我们已经看到, 元编程在一个类似jsp模板引擎方面的应用。我们通过简单字符串处理来生成代码。...例如, 上面曾经将过C求三次方, 用Lisp来写是这样子: (defmacro triple (x) `(+ ~x ~x ~x)) (译注: 在Common Lisp中, 此处单引号应当是反单引号..., 意思是对表不求值, 但可以对表中某元素求值, 记号~表示对元素x求值, 这个求值记号在Common Lisp中应当是逗号。...这里作者所用记号是自己发明一种Lisp方言Blaise, 和common lisp略有不同, 事实上, 发明方言是lisp高手独有的乐趣, 很多狂热分子都热衷这样做。

    1.7K60

    日拱一卒,伯克利教你用Lisp写递归,写完后我感觉代码更溜了

    另外Lisp语言特性使得它词法语法分析很好做,可能也是为后面的编译原理打基础,并且整个语言代码是以链表形式存储,也能更好地帮助大家理解递归和链表等数据结构。...evaluate之后结果上 下面是使用数学运算符一些例子: Special forms 特殊形式。...Scheme中特殊形式严格拥有如下表达式: 其中比较特殊是,它们不遵守刚才所说evaluate三规则。相反,每一个特殊形式都有自己执行规则,比如短路掉操作数evaluate。...我们今天将会学习特殊形式当中一些案例,比如if, cond, define和lambda。阅读下面对应章节来了解它们evaluate规则。...这个表达式也是特殊形式,因为它操作数没有被evaluate。比如在过程定义时候并没有被执行,而是在被调用时候才会执行。

    63440

    为什么Lisp语言如此先进?(译文)

    Lisp无所不包,它既可能是某样表达式缩略形式,也可能是一种新语言编译器。如果你想真正地理解Lisp语言,或者想拓宽你编程视野,那么你必须学习。...就我所知,(采用Lisp语言定义)目前仍然是Lisp独有的。一个原因是为了使用,你大概不得不让你语言看上去像Lisp一样古怪。...使用这些特殊内部属性名(尤其是__call__),看上去并不像常规解法,更像是一种破解。...、到处都是bug、运行速度很慢Common Lisp实现。"...代码中其他任何外加形式,都是一个信号,(至少对我来说)表明我对问题抽象还不够深,也经常提醒我,自己正在手工完成事情,本应该写代码,通过扩展自动实现。 (完)

    1.2K60

    Go 代码与作用域,变量遮蔽问题详解

    2.3 代码 代码没有显代码那样肉眼可见配对大括号包裹,我们无法通过大括号来识别代码。...不过你要注意,这里控制语句代码与控制语句使用大括号包裹代码并不是一个代码。你再看一下前面的图,switch 控制语句代码位置是在它显代码外面的。...4.2.2 第二个问题:遮蔽包代码变量 你看,位于第 7 行 switch 语句在它自身代码中,通过短变量声明形式重新声明了一个变量 a,这个变量 a 就遮蔽了外层包代码包级变量...4.2.3 第三个问题:遮蔽外层显代码变量 同样还是第 7 行 switch 语句,除了声明一个新变量 a 之外,它还声明了一个名为 err 变量,这个变量就遮蔽了第 4 行 checkYear...函数在显代码中声明 err 变量,这导致第 12 行 nil 赋值动作作用到了 switch 代码 err 变量上,而不是外层 checkYear 声明本地变量 err 变量上,后者并非

    46530

    附录B 编程本质附录B 编程本质编程本质N小结编程简史名词纪要参考资料

    从这个角度看,无论哪个学科,哪个领域,都是这样一个过程。所以,人类所有知识体系、学科类别,都是相通。毕竟,都是人类大脑思维结果。...代码“表面积”是是我们复合代码时所需要信息(接口API协议定义)。代码“体积”就是接口内部实现逻辑(API背后实现代码)。...LISP为函数程序设计语言,所有运算都能以函数作用于参数方式来实现。LISP核心操作符只有7个:quote、atom、eq、car、cdr、cons、cond。...1980年代:增强、模块、性能 1980年代编程语言与之前相较显得更为强大。C++合并了面向对象以及系统程序设计。美国政府标准化一种名为Ada系统编程语言并提供给国防承包商使用。...日本以及其他地方运用了大量资金对采用逻辑编程语言结构第五代语言进行研究。函数编程语言社区则把焦点转移到标准化ML及Lisp身上。

    64730

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

    这个比较小众编程到底是什么~ ————————————————————————— LISP(全名LISt Processor,即列表处理语言),由约翰·麦卡锡在1960年左右创造一种基于λ演算函数编程语言...LISP有很多种方言,各个实现中语言不完全一样。1980年代Guy L. Steele编写了Common Lisp试图进行标准化,这个标准被大多数解释器和编译器所接受。...在Unix/Linux系统中,还有一种和Emacs一起Emacs Lisp(而Emacs正是用Lisp作为扩展语言进行功能扩展)非常流行,并建立了自己标准。...LISP语言主要现代版本包括Common Lisp和Scheme。 基本介绍 LISP 是第一個函數型程式語言,区别于C/Java等命令型编程语言。...cons cell,就表示成表形式,例如: (a .

    2.3K20

    编程语言出现都这么随意吗?

    Fortran 最新标准化版本是 Fortran 2008。 Fortran 设计思想基于冯诺依曼体系结构是命令语言鼻祖。 A.2....麦卡锡希望 Lisp 语法是数学表达式元语言,命名为 M(Mate)表达式,类似于后面的 ML 语言语法。...但是这种想法遭到了当时 Lisp 程序员反对,最后麦卡锡开了 MIT,从此 Lisp 语法凝固在 S 表达式上。 Lisp 建立在列表和 lambda 演算和基础上,是函数编程鼻祖。...所谓逻辑编程,就是以形式逻辑方式将计算过程传递给计算机。 A.12. 极简主义:Scheme Scheme 作为一种 Lisp 方言,同样诞生在 MIT,时间是 1975 年。...嵌入语言:Ada Ada 语言诞生于 1980 年,是嵌入系统应用语言。 Ada 83 是 1983 年标准化版本。1995 年,Ada 95 标准语言在 ARM 中定义。

    1.6K60

    Emacs Lisp

    LISP 编程语族已经演变出许多种方言,现代最著名通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs LispLisp 一个分支 Emacs Lisp...,一种直译脚本语言,为LISP方言之一,GNU Emacs与XEmacs文字编辑器都使用这个编程语言来扩展它们功能,它直译器是以C语言来实作,它受到Maclisp影响很大,但是跟Common...;; ;; ;; 如何切换Emacs工作模式 ;; Emacs有各种各样功能各异模式,工作模式含义其实就是Emacs对当前文本编辑工作 ;; 更加敏感,比如高亮和缩进,并且支持一些特殊命令...变量值为“you” ;; 然后接着执行括号中其它语句部分,这个功能和progn类似 (let ((local-name "you")) (switch-to-buffer-other-window...结构比较一脉相承 然后为了印证我所学,我自己写了一个小函数,用于这篇文章中输入两个由 ~~~ 来标识代码 (local-set-key (kbd "C-c C-`") '( lambda ()

    2.3K40
    领券