美文网首页
2.4 点对,列表和Racket语法

2.4 点对,列表和Racket语法

作者: jarod_chan | 来源:发表于2015-11-08 13:34 被阅读546次

cons函数实际上可以接受任何两个值,第二个参数不一定要是列表。当第二个参数不是列表的时候,打印结果会是一种特殊形式。中间用点号隔开。
因此,cons产生的值不都是list。在一般情况下,cons的结果是pair。cons?的传统表示是pair?。而first和rest的则是car和cdr。只要记住a在前d在后。
list只是一种特殊的pair。当你出错的时候,你会经常碰到非列表的点对。
打印点号的规则:当点号马上跟一个开括号,则省略点号开括号和对应的闭括号。
所以 <code>'(0 . ( 1 . 2))</code>的打印形式是<code>'(0 1 . 2)</code>,而<code>'(1 . (2 . (3 . ()))) </code>的打印形式是<code>'(1 2 3)</code>。

2.4.1用quote引用pairs和symbols

quote函数与引号等价。带引号的identifier是symbol。两者之间其实没有关系。symbol本质上就是它的字面值。它和字符串基本上一样,主要不同是打印形式。函数symbol->string,string->symbol用来互相转化。
quote一个列表会包quoet应用到列表的每一元素上面,组成一个symbol的list,内部的symbol打印时引号会被省略。
quote对字面表达式没有影响,比如数字和字符串。

2.4.2用’缩写quote

2.4.3list和Racket语法

Racket的语法不是直接定义在字符流上面。语法有两层决定。
读取层:转换字符序列到list,symbol,和其它常量
解释层:处理list,symbol,和其它常量作为表达式
读取和打印的规则统一。比如,list打印成一对括号,那么读取一对括号就会产生一个列表。一个非列表的pair打印形式中有<code>.</code>,那么一个<code>.</code>输入会产生一个点对。
two-dot转换:一对点出现在一个元素两边,并且这个元素不是列表的开头或者结尾。那么将会变成中缀表达式。

相关文章

  • 2.4 点对,列表和Racket语法

    cons函数实际上可以接受任何两个值,第二个参数不一定要是列表。当第二个参数不是列表的时候,打印结果会是一种特殊形...

  • [Racket] Language Model(二):Synta

    The syntax of a Racket program is defined by Racket 程序的语法是...

  • HTML-自定义列表

    定义列表常用于对术语或名词进行解释和描述,定义列表的列表项前没有任何项目符号。其基本语法如下: 例如:

  • Markdown学习笔记

    列表语法 无序列表 无序列表基础语法 无序列表1 此处使用*和空格作为无序列表项的开头语句为: 无序列表2``` ...

  • 简单使用markdown

    标题: 语法###素数和` 示例素数和 无序列表: 语法* 1111* 2222 示例11112222 图片 语法...

  • Racket快速浏览

    by Matthew Flatt 本教程通过使用Racket编程语言的一个绘图库对Racket编程语言进行简要介绍...

  • 2018-12-19

    前言 Markdown基本语法总结 正文 列表 无序列表 语法 效果我是无序列表1我是无序列表2 有序列表 语法 ...

  • 初始JavaScript

    1. 初试JS代码 2. js基本语法2.1 注释2.2 大小写2.3 语法结尾2.4 空格和换行 3. 字面量和...

  • 下载,安装,运行,关闭racket

    (下载 racket) 打开racket-lang.org,在这里你可以下载到racket。包含了Drracket...

  • emacs 搭建racket开发环境

    emacs下搭建开发racket的环境,笔者之前用过以下两种模式:geiser和racket-mode。相对而言,...

网友评论

      本文标题:2.4 点对,列表和Racket语法

      本文链接:https://www.haomeiwen.com/subject/tjwchttx.html