2.8 如何阅读Lisp
之前章节我们定义的pseudo-member函数在结尾处有五个括号。如果你遇到了更加复杂的函数,它的结尾可能有七个甚至八个括号。刚刚接触学习Lisp语言的人看到这么多括号可能会觉得很茫然,也会因为看不懂而沮丧。“我一个萌新怎么可能看得懂有这么多复杂结构的代码?我自己怎么可能写的出来?我怎么才能分辨出来那个括号对应的是哪个?”
这个答案的回答是,你并不需要弄清楚那个括号对应的是那个。真的Lisp程序员在读程序或者写程序时,关注的是缩进的对应,而不是括号。(译者注:参照python)当他们写程序时,他们根本没有考虑括号的对应,这项任务是由文本编辑器完成的,他们让文本编辑器显示一个左括号是跟那个右括号对应的。任何一个好的文本编辑器,特别是那些有针对Lisp风格的文本编辑器,都应该能够帮程序员进行括号匹配。在这样的编辑器里,当你打出了一个左括号,编辑器会自动为你打出来右边那个。如果你的编辑器没有这个功能,老兄,现在先停下一切,然后弄到一个有这样功能的编辑器。这非常非常重要,因为如果你没有这样功能的编辑器,你根本不可能写出来Lisp代码。
有了一个好的编辑器,括号配对问题应该就不再是你编程时的一个问题了。又因为对于Lisp编程,大家对于程序缩进有一个普遍的规范(如python一样),你读代码也不再是一个问题了。因为人人都是按照这个规范来编程的,你读代码是注意缩进就好,不用再在意那些括号了。

Annis Commom Lisp相关推荐

  1. 中国都有哪些顶级优秀的程序员?

    中国都有哪些顶级优秀的程序员? 91.com移动互联网第一平台时间:2017-05-27[网站合作]快速评论关注91 相关搜索: 科学家第二次警告 小海绵正面照曝光 红通张靖川投案 3名男子香港遇袭 ...

  2. lisp协议instand_分享|Linux 上 10 个最好的 Markdown 编辑器

    在这篇文章中,我们会点评一些可以在 Linux 上安装使用的最好的 Markdown 编辑器. 你可以在 Linux 平台上找到非常多的 的 Markdown 编辑器,但是在这里我们将尽可能地为您推荐 ...

  3. 我也说说Emacs吧(6) - Lisp速成

    前面我们学习了基本操作,也走马观花地看了不少emacs lisp的代码.这一章我们做一个lisp的速成讲座. Lisp的含义是表处理语言.它的代码组成结构都是用括号组成的表来表示的.Lisp中的功能, ...

  4. Lisp 家族迎来新成员,函数式语言 Lux 是什么?

    代码世界即将加入一门新成员:Lux.你没看错,它不是洗发水,而是古老的 Lisp 家族中新诞生的函数式语言. 目前 Lux 还在研发之中,最新版本是 0.5.0.它可被用来编写一系列在 JVM (Ja ...

  5. common lisp里的几个操作符

    setf  赋值操作符,定义一个全局变量.返回值是最后一个赋值的结果. let 局部变量操作符.let表达式有两部分组成.第一部分是任意多的变量赋值,他们被包裹在一个()中,第二部分是任意数量的表示式 ...

  6. 你不可不知的9种Lisp语言思想

    本文来源 Lisp语言诞生的时候就包含了9种新思想.其中一些我们今天已经习以为常,另一些则刚刚在其他高级语言中出现,至今还有2种是Lisp独有的.按照被大众接受的程度,这9种思想依次如下排列. (1) ...

  7. 实用Common Lisp编程——函数

    有了语法和语义规则以后,所有Lisp程序的三个最基本组成部分就是函数.变量和宏.在第3章里构建数据库时,这三个组件已经全部用到了,但是我没有详细提及它们是如何工作的,如何更好使用它们.接下来的几章将专 ...

  8. 在博客园添加Lisp(或其它)代码高亮

    由于我这一段对Emacs很有兴趣,发了不少关于这玩意儿的文章.但博客园的代码高亮并不支持Emacs Lisp,之前一直也没怎么管,前几天看见李杀的这篇 Syntax Coloring with Goo ...

  9. AutoCAD LISP花型图案一

    AutoCAD LISP花型图案一,代码如下. (defun c:test()   (setq cen1 (getpoint "\n中心点:"))   (setq rr (getd ...

最新文章

  1. qt label显示文字_Qt官方示例共享内存
  2. 软件开发---全套规范
  3. A20 GPIO中断类型差别结果迥异的问题思考
  4. 安装Ubuntu版本linux过程中没有提示设置root用户密码问题的解决办法
  5. 2020-09-01
  6. linux的增强文件夹,在linux系统中安装virtualbox增强功能(增强包)的详细步骤是什么...
  7. Android书页翻页设计:android-flip
  8. linux dma 拷贝内存数据_原来 8 张图,就可以搞懂「零拷贝」了
  9. server2003虚拟机损坏后的文件找回
  10. java day35【Bootstrap】
  11. 中国移动下一代移动技术将选择LTE
  12. Axure8.0汉化包+注册码
  13. java营销活动动态引擎规则_JAVA规则引擎 Drools 教程
  14. mac安装指定版本的ruby_Mac 下安装Ruby环境
  15. 为什么要学好数据结构和算法
  16. gitlab太占内存怎么办?一招帮你解决这个问题
  17. python画彩色螺旋线图
  18. [STM32] 发现一篇非常好的讲解libusb、winusb、libusbk关系的文章
  19. 右键新增文件/文件夹-打开方式
  20. Acwing春季每日一题 混合牛奶(朴素做法和优化做法)

热门文章

  1. Spring MVC原理介绍
  2. 红旗linux挂载硬盘命令,红旗linux 增加磁盘后linux认盘操作
  3. Sage X3 PJM结构分解示例详解(项目管理)
  4. [旭日x3] 动手实践之yolov5-deepsort python测试
  5. 计算机读不出相机磁盘,相机内存卡读不出来该怎么解决?
  6. 异常:app is in background uid UidRecord/stadid not then call Service.startForeground
  7. uni-app基础知识笔记
  8. 利用无人机(手机)和Unity3D软件制作自己的VR全景软件
  9. 显示器分辨率和图像分辨率的关系
  10. [230530] 托福TPO口语真题| TPO66~TPO72|XPO|Task1|20:30~21:00