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

为什么习惯上在基于Lisp的语言中将许多右括号放在一行上?

在基于Lisp的语言中,习惯上将许多右括号放在一行上的原因是为了提高代码的可读性和可维护性。

首先,将多个右括号放在一行上可以减少代码的垂直空间占用,使得代码在屏幕上的显示更加紧凑。这样一来,开发者可以在有限的屏幕空间内一次性看到更多的代码,减少了滚动屏幕的频率,提高了代码的阅读效率。

其次,将多个右括号放在一行上可以更清晰地显示出代码的层次结构。Lisp语言中的括号是用来表示表达式的开始和结束的,通过将多个右括号放在一行上,可以更直观地看到每个表达式的结束位置,从而更容易理解代码的结构和逻辑。

此外,将多个右括号放在一行上还可以减少代码中的嵌套层级,使得代码更加扁平化。这样一来,开发者可以更容易地理解和修改代码,减少了出错的可能性。

总的来说,将许多右括号放在一行上是基于Lisp语言的特点和设计哲学,旨在提高代码的可读性、可维护性和易用性。这种习惯也被广泛应用于其他基于Lisp的语言,如Clojure和Scheme等。

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

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

相关·内容

写给小白开源编译器

现在我们就要对这个项目本身进行进一步学习了,有些背景需要提前了解一下。这个项目主要是把 LISP 语言编译成我们熟悉 JavaScript 语言。 那为什么要用 LISP 语言呢?...LISP 是具有悠久历史计算机编程语言家族,有独特和完全用括号前缀符号表示法。起源于 1958 年,是现今第二悠久仍广泛使用高端编程语言。...首先 LISP 语言和我们熟悉 C 语言和 JavaScript 语言很不一样,虽然其他语言也有强大编译器,但是相对于 LISP 语言要复杂得多。...每匹配一个左括号,就能在下一个得到表达式名字,没有遇到括号之前都经过递归把树状结构丰富起来,直到遇到括号停止递归,直到循环结束。...、替换属性来操作节点,或者也可以新增节点、删除节点,甚至我们可以原有的 AST 结构保持不变状态下创建一个基于全新 AST。

66410

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

比如说: Lisp括号只是表面现象; Lisp代码和数据表达方式没有差别, 而且比XML语法高明许多, 所以有无穷好处; Lisp有强大无比语言能力, 程序员可以写出自我维护代码; Lisp...和别人争论了数个小时之后, 我最终还是放弃了学Lisp念头。为什么要花费几个月时间学习语法这么难看语言呢? 这种语言概念这么晦涩, 又没什么好懂例子。也许这语言不是该我这样的人学。...顿悟突然之间来临。曾经许多次, 我听到别人引用雷蒙德(译者注: 论文>作者, 著名黑客社区理论家)的话: "Lisp语言值得学习。当你学会Lisp之后, 你会拥有深刻体验。...经受这一番折磨以后, 现在我们终于相当接近Lisp了, Lisp括号神秘本质(就像许多Lisp狂热分子认为)逐渐显现出来。现在我们继续研究其他内容。...我们可以把这些叠放在一起, 造出一个语言, 专门解决基于网络贸易程序, 既有网络语言优势, 又有贸易语言好处。每天我们都会收获这种方法带给我们益处, 远远超过Ant所能给予我们

1.7K60
  • Clojure 开发那些事

    其实也好理解,Lisp 语言诞生这么久了,为什么一直那么小众?原因就在于 Lisp 语言过于强大,不必也不可能像 Java 那么普及。你能要求每个人都能为 CTO 吗?...除了最基本括号()外,方括号[]与花括号{} Clojure 用也比其他 Lisp 方言中多。...这一点非常重要,估计也是为什么 Clojure 较其他 Lisp 方言更流行原因。...Clojure 宿主语言现在主要有两个:一个是最多最多基于 JVM ;另一个是基于微软 .NET Clojure-CLR,现在还有一个发展迅猛 ClojureScript,可以将 Clojure...“操作系统”,对以括号著称 Lisp 语言有天然支持,括号匹配主要是 Paredit mode,可以方便括号作为一个整体操作,不过像 Cursive 这种插件也集成了 Paredit 主要功能

    1.6K20

    Clojure 学习入门(1)—— 学习资料

    Clojure(发音类似"closure",['kləʊʒə(r)])是一套现代Lisp语言动态语言版,它是一个函数式多用途语言,其语法和其他Lisp一样,都是建立 S-expression...Clojure 理念和特性 Clojure是什么,为什么有人要学这门语言?...而那些对lisp语言缺乏了解的人却往往会认为:这是一门相当奇怪,充斥着令人困惑括号和方括号语言....对下面语句意思理解会因为读者编程经验不同而有很大差异,它可能会让你非常兴奋,也可能让你产生一些轻微不适. Clojure 是完全,真正意义神圣lisp语言一个方言。...Clojure 高速、干净、具有优先能力和优雅特征. 但是没有改变lisp中 "代码也是数据" 哲学. Clojure 语言直觉和观感比历史上lisp更易于阅读.

    1.4K10

    linux下shell脚本编程

    作为命令语言,它交互式地解释和执行用户输入命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。...Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中命令一行一行敲到Shell提示符下执行...Unix/Linux常见Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说是Shell脚本解释器。...因此,之所以要使用Shell脚本是基于: 简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂操作。 可移植性:使用POSIX所定义功能,可以做到脚本无须修改就可在不同系统执行。...下面的脚本使用 read 命令从 stdin 获取输入并赋值给 PERSON 变量,最后 stdout 输出: #!

    2.3K20

    Emacs Lisp

    前言 Lisp 是一门很古老语言 LISP 是具有悠久历史计算机编程语言家族,有独特和完全括号前缀符号表示法,起源于1958年,是现今第二悠久而仍广泛使用高级编程语言,只有 FORTRAN 编程语言比它更早一年...,LISP 编程语族已经演变出许多种方言,现代最著名通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs LispLisp 一个分支 Emacs Lisp...,一种直译式脚本语言,为LISP方言之一,GNU Emacs与XEmacs文字编辑器都使用这个编程语言来扩展它们功能,它直译器是以C语言来实作,它受到Maclisp影响很大,但是跟Common...中可以双击emacs图标,Linux中可以输入% emacs & ), ;; 然后键盘上键入q 跳过系统欢迎信息, ;; 先观察Emacs屏幕底部,会给出一堆关于当前工作情况信息,其中灰色一行叫做状态行...,我按下 Ctrl-c Ctrl-` 时候,会自动输出一个 markdown 代码框,然后将光标定位到要输入代码位置 ---- 总结 Lisp 真的很简洁优雅 只是括号看起来有点怪 它提供了编程另一种思维方式

    2.3K40

    Emacs Lisp

    前言 Lisp 是一门很古老语言 LISP 是具有悠久历史计算机编程语言家族,有独特和完全括号前缀符号表示法,起源于1958年,是现今第二悠久而仍广泛使用高级编程语言,只有 FORTRAN 编程语言比它更早一年...,LISP 编程语族已经演变出许多种方言,现代最著名通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs LispLisp 一个分支 Emacs Lisp...,一种直译式脚本语言,为LISP方言之一,GNU Emacs与XEmacs文字编辑器都使用这个编程语言来扩展它们功能,它直译器是以C语言来实作,它受到Maclisp影响很大,但是跟Common...中可以双击emacs图标,Linux中可以输入% emacs & ), ;; 然后键盘上键入q 跳过系统欢迎信息, ;; 先观察Emacs屏幕底部,会给出一堆关于当前工作情况信息,其中灰色一行叫做状态行...,我按下 Ctrl-c Ctrl-` 时候,会自动输出一个 markdown 代码框,然后将光标定位到要输入代码位置 ---- 总结 Lisp 真的很简洁优雅 只是括号看起来有点怪 它提供了编程另一种思维方式

    2.2K30

    Java编码规范

    示范 文档注释 紧靠接口、类、成员函数和字段声明前面注释它们。 /** 客户:客户是我们将服务和产品卖给的人或机构。*/ C 语言风格 采用 C 语言风格注释去掉不再使用但你仍想保留代码。...它只是简单用来将类变量赋值获取值的话,可以简单写在一行,如类成员变量已经有注释,类变量存取方法可以没有注释。...,对于集合,加入成员函数来插入和删除项;另其它方法不要写在一行。...例如, 下面的第1行是错误, 第2行是正确: if (i>0) { i ++ }; // 错误, { 和 } 一行 if (i>0) { i ++ }; // 正确, 单独作为一行 n 括号...左括号和后一个字符之间不应该出现空格; 同样, 括号和前一个字符之间也不应该出现空格。

    91040

    NUS CS1101S:SICP JavaScript 描述:前言、序言和致谢

    嵌套列表可能是一种通用数据结构(值得注意是,许多现代和广泛使用数据结构,如 HTML、XML 和 JSON,也是括号嵌套表示,只是比 Lisp 括号稍微复杂一点)。...在这本书中,“程序”使用集中使用 Lisp 方言编写、在数字计算机上执行程序创建、执行和研究。使用 Lisp,我们限制或限定不是我们可以编程内容,而只是我们程序描述符号。...毕竟,软件工程和人工智能关键编程问题在研究系统变得更大时往往会融合在一起。这解释了为什么人工智能之外对 Lisp 兴趣越来越大。 正如人们所期望那样,人工智能研究产生了许多重要编程问题。...随着接近我们人类最常互动系统边界,这些语言往往变得不那么原始。因此,这些系统包含了许多次复制复杂语言处理功能。Lisp 具有如此简单语法和语义,以至于解析可以被视为一项基本任务。...任何规模超过几行 Lisp 程序都无法没有自由功能情况下编写。发明和适应;发作和重新发明!我们向括号巢穴中书写他思想 Lisp 程序员干杯。 —Alan J.

    18310

    实例说明

    诚然如此,麻雀虽小,五脏俱全,即使非常简单一个C程序,也包含着许多知识,这一节,我们将从逐条语句出发,去深入探讨程序背后,如果您能更深理解这个简单程序,那么之后学习中将更加顺畅自如!...C语言注释一个好处就是可以放在任何地方,甚至是和它要解释语句一行。一个较长注释可以单放一行,或者是多行。/*和*/之间所有内容都会被编译器忽略掉。...,它被普遍用在C++或java里,这种新形式使用//符号,但这种注释被限制一行里: 如 x=10;//将x赋值为10 四、花括号 { /*... */ } C程序中,通常所有的C函数都使用花括号来表示函数体开始与结束...声明变量被认为是一种好编程技术,C语言当中必须这样做。 传统,C语言要求必须在一个代码块开始处声明变量,在这之前不允许任何其他语句。...事实,%告诉程序把一个变量在这个位置输出,d告诉程序将输出一个十进制(以10为基数)整数变量。printf()函数允许多种输出变量格式,包括十六进制(以16为基数)整数和带小数点数。

    1.4K80

    不管是嵌套 XML,还是 Lisp 嵌套括号,还是 XXX Map 数据结构,一切都是树形结构——映射。Lisp本质(The Natur

    比如说: Lisp括号只是表面现象; Lisp代码和数据表达方式没有差别, 而且比XML语法高明许多, 所以有无穷好处; Lisp有强大无比语言能力, 程序员可以写出自我维护代码; Lisp...和别人争论了数个小时之后, 我最终还是放弃了学Lisp念头。为什么要花费几个月时间学习语法这么难看语言呢? 这种语言概念这么晦涩, 又没什么好懂例子。也许这语言不是该我这样的人学。...顿悟突然之间来临。曾经许多次, 我听到别人引用雷蒙德(译者注: 论文>作者, 著名黑客社区理论家)的话: "Lisp语言值得学习。 当你学会Lisp之后, 你会拥有深刻体验。...经受这一番折磨以后, 现在我们终于相当接近Lisp了, Lisp括号神秘本质(就像许多 Lisp狂热分子认为)逐渐显现出来。现在我们继续研究其他内容。...我们可以把这些叠放在一起, 造出一个语言, 专门解决基于网络贸易程序, 既有网 络语言优势, 又有贸易语言好处。每天我们都会收获这种方法带给我们益处, 远远 超过Ant所能给予我们

    1.4K20

    autocad二次开发资料总结

    为什么要对AutoCAD进行二次开发 AutoCAD是目前Windows和MAC系统中应用最为广泛、使用人数最多CAD软件。...VisualLISP IDE同时提供了完整编辑环境使得用户可以对代码进行调试跟踪、源码语法检查、括号匹配、函数提示等工具,方便创建和调试LISP程序。...ARX(AutoCAD Runtime eXtension)是ADS基础发展起来一种面向对象C语言编程环境。由ADS到ARX变迁就像C到C++转变。...AutoCAD 2014与AutoCAD 2013二进制兼容 原先基于AutoCAD 2013开发应用程序不用重新编译就应该能在AutoCAD 2014运行,当然.net framework还是用...既然是web页面那估计会放在某个web站点,上面提到安全性是引入系统变量,你需要把你域名加入到TRUSTEDDOMAINS系统变量中去。

    3K32

    PSR-12 编码规范扩充

    左花括号 必须 独自成行,且 不得 在其一行或下一行存在空行。 括号 必须 独自成行,且 不得 在其一行存在空行。 1<?...当这么做时,第一个参数 必须 放在一行,且每行 必须 只能有一个参数。 当参数列表分成多行时,括号和左花括号 必须 放在一行且单独成行,两者之间存在一个空格。 1<?...括号表达式 可能 会被分开为多行,每一行至少缩进一次。如果这样做,第一个条件 必须 一行括号和左大括号 必须 一行,而且中间有一个空格。...如果这样做,第一个条件 必须 一行括号和左大括号 必须 一行,而且中间有一个空格。 1<?...执行此操作时,列表中第一项 必须 放在一行,并且每行只能有一个参数或变量。 结束多行列表(或者参数,变量)时候,括号和左大括号 必须 要放在一行,而且中间有一个空格。

    796110

    IT深度趋势:11种编程语言一度辉煌 缘何没落?

    1、Ada 1970年代中期有许多用于不同目的不同编程语言。美国国防部发现了这种混乱情况和潜在危险,所以他们想要委任一种新语言--一种能统帅所有程序语言。...除了AI世界之外,LISP没有成功,如果你见过IBM大型机实现早期LISP变体调试故障输出,你就会明白是为什么了。没有缩进,长串“}”字符就能列出好几页去。...Seymore Papert是Logo主要开发者。他原本希望他语言来教人们如何编写LISP程序,但他意识到了许多人反应他们写程序时物理表象。...由于Pascal,他为此世界带来一种为教结构化编程概念语言。从1970年代中期到1980年代中期,它做到了。在这一路,它也成为了一种定义个人电脑编程重要语言。...可以把它看作一个编程语言规范。 Smalltalk是1970年代末和1980年初由Xerox PARC工作许多计算机科学巨星创作出来。它只保留了六个关键字组,并且一个消息传递模型中操作。

    1.3K70

    实用函数式编程

    然而 -- 这种变化并没有从 2000 到 2011 年那般戏剧化, 也没有从 1990 到 2000 年翻天覆地. 我们又到了计算机和软件技术一个瓶颈期了吗?...那么, 你应该使用哪种函数式编程语言呢? 我最喜欢是 Clojure. 因为 Clojure 极其简单. 它是 Lisp 一个方言, Lisp 是一个十分简单和漂亮语言....在这里, 来稍微展示一下: Java 中一个函数: f(x); 现在, 将它转换为 Lisp 一个函数, 简单地将第一个括号移到左边即可: (f x)....现在, 你已经学会 95% Lisp 和 90% Clojure 了. 对这些语言而言, 这些括号就是全部语法了. 极其简单. 你可能以前见过 Lisp 程序, 不过不喜欢这些括号....Clojure 有着比 Lisp 更多符号, 所以括号相对少一些. Clojure 用 first, rest 和 second 代替了 CAR, CDR 和 CADR.

    1.1K20

    【译】一个超级小编译器

    ,再强调一次,这个阶段只是把上个阶段生成AST拿来进行一些修改,它可以保持原来语言,也可以把它翻译成全新语言。...因为我们目标是一个新语言,所以我们将基于目标语言创建一个全新AST。 遍历(Traversal) 为了在所有节点中穿梭,我们需要能够遍历它们,这个遍历过程会以深度优先方式到达每个节点。...,递归调用`walk`,直到遇到括号 // 译者注:这里其实就是考察递归思维,如果一个任务可以拆解成更小子任务,且子任务和大任务逻辑是一样就可以使用递归,对于这里来说,add...我们需要能够遇到匹配类型节点时调用访问器方法。...节点来包裹,所以转换过程是这样,我们首先创建一个新AST根节点,但是我们遍历是旧AST,所以怎么能在新AST添加节点呢,可以通过AST节点创建一个属性来引用新AST列表属性,这样就可以遍历旧树时往新列表里添加节点

    65320

    27 个问题,告诉你Python为什么这么设计

    即使是经验丰富C程序员有时会长时间盯着它,想知道为什么即使 x > y , y 也减少。 因为没有开始/结束括号,所以Python不太容易发生编码式冲突。C中,括号可以放到许多不同位置。...如果您习惯于阅读和编写使用一种风格代码,那么阅读(或被要求编写)另一种风格时,您至少会感到有些不安。 许多编码风格将开始/结束括号单独放在一行。...这不仅仅是由于缺少开始/结束括号 -- 缺少声明和高级数据类型也是其中原因 -- 但缩进基于语法肯定有帮助。 为什么简单算术运算得到奇怪结果? 请看下一个问题。 为什么浮点计算不准确?...这意味着就浮点运算而言,Python 行为类似于许多流行语言,包括 C 和 Java。 许多可以轻松地用十进制表示数字不能用二进制浮点表示。...CPython列表实际是可变长度数组,而不是lisp风格链表。该实现使用对其他对象引用连续数组,并在列表头结构中保留指向该数组和数组长度指针。

    6.7K11

    Win8快捷键

    操作习惯上,Metro界面更多照顾平板电脑等触摸设备,针对传统键盘鼠标操作,Win8也引导着用户尽可能多使用快捷键,此外还要学会善用鼠标右键。...微软这些操作改进,也是照顾着非触摸屏设备用户,Metro界面,为平板而生,但是绝不会抛弃PC。...搜索”个性分类 Windows 键 + F 打开所选文件“搜索”个性分类 Windows 键 + Q 打开所选应用程序“搜索”个性分类 Windows 键 + 空格键 切换语言或输入法(如果启用了多种语言或输入...) Windows 键 + Z 打开当前应用程序命令或选项(如果该应用程序有定义) Windows 键 + Enter 打开“讲述人” Windows标键 + V 屏幕通知中循环切换 Windows...键 + Page Up 多监视器设置中将开始屏幕移动至左监视器 Windows 键 + Page Down 多监视器设置中将开始屏幕移动至监视器 Windows 键 + O 开启或关闭屏幕方向锁定

    1.4K30

    Python 之父解析器系列之七:PEG 解析器元语法

    但是既然我们已经有了动作,许多其它解析器也会想要自定义它们导入,所以为什么我们不试试看,能否添加一个更通用功能呢。 有很多方法可以剥了这只猫皮(译注:skin this cat,解决这个难题)。... Python 表达式中可以合法地出现唯一其它标识符是名称、数字和字符串。因此,动作最外侧花括号之间“东西”似乎是一组循环 NAME | NUMBER | STRING | OP 。...我不知道这是否是其它 PEG 解析器标准配置——当我考虑如何解决括号(甚至嵌套符号)识别问题时,立马就想到了这个方法。它似乎运作良好,我认为这符合 PEG 解析一般哲学。...它可以被视为一种特殊形式前瞻(我将在下面介绍)。 使用这个小调整,当出现花括号时,我们可以使 OP 匹配失效,它可以通过 stuff 和 action 进行匹配。...我想做事情纯粹是美容性:我不喜欢被迫将所有备选项放在一行

    1.4K60
    领券