反正边学边记就是了……
======================================================
标识符允许的范围:
[a-zA-Z?!*\/<=>:$%\^&_.~][a-zA-Z0-9?!.+\-*\/<=>:$%\^&_.~@]*
也就是:
小写字符a-z
大写字符A-Z
数字0-9
符号 ? ! . + - * / < = > : $ % ^ & _ ~ @
标识符开头不能为'@',一般也不以数字、'+'、'-'、'.'开头。
"+"、"-"、"..."为例外。
标识符的大小写不敏感。
------------------------------------------------------
注释标记:
';'开始直到行末是注释。
------------------------------------------------------
数据类型:
表:用成对的括号("()")括住的。可以嵌套。也称为S-expression(Symbolic expression)。
向量:("#()")括住的,例如#(this is a vector of symbols)。
字符:("#\")开头的,例如#\a。
字符串:成对的双引号之内括住的,例如"This is a string."。
数字:
--整型:123, +123, -123
--有理数:1/2
--浮点数:1.3, 1e23
--复数:1.2-2.3i(平面坐标), -1.2@73(极坐标)
布尔值:#t #f。在Scheme的条件表达式里,只有#f才被认为是假,而其它对象都被认为是真。所以3, (), "false", nil都是真。
(DEFINE (test a)
(COND
((EVAL a) (DISPLAY "true"))
(ELSE (DISPLAY "false"))
)
)
(test #f) ;=> false
(test ()) ;=> true
======================================================
谓词:
EQ? EQV? EQUAL? LIST? NULL?
数字谓词:
= <> < > <= >= >= EVEN? ODD? ZERO?
======================================================
表操作函数:
CAR:取表头
CDR:取表头以外剩余的部分
CONS:连接表。与CAR/CDR是相对的操作。
(CONS (CAR list) (CDR list)) ;=> list
APPEND:合并两个表
(APPEND list1 list2)
(APPEND '(a b c) '(d e f)) ;=> (a b c d e f)
======================================================
控制流/条件语句:
if语句:
(IF
predicate_expression
then_expression
else_expression
)
例如
(IF (> a b)
(- a b)
(- b a)
)
------------------------------------------------------
cond语句:
(COND
(predicate_1 expression_1 expression_2 ...)
(predicate_1 expression_1 expression_2 ...)
(predicate_1 expression_1 expression_2 ...)
...
(predicate_1 expression_1 expression_2 ...)
(else expression_1 expression_2 ...)
)
cond语句按照代码书写的顺序从前向后匹配谓词,然后执行第一个值为真的谓词后面的表达式。
else是可选的。实际上这里else就是一个#t值而已。
例如
(COND
((> a b) 1)
((= a b) 0)
((< a b) -1)
)
======================================================
lambda表达式:
(LAMBDA (formal_parameter_1 formal_parameter_2 ...)
expression_1 expression_2 ...
)
======================================================
quote表达式:
所有表和原子符号都会被解释器eval,为了避免某些表或原子符号被eval,则需要将其quote起来。
(QUOTE expression)
这个也可以被缩写为
'expression
======================================================
定义常量或函数:
(DEFINE symbol expression)
(DEFINE function_name (LAMBDA (formal_parameter_1 formal_parameter_2 ...)
expression_1 expression_2 ...
))
(DEFINE (function_name formal_parameter_1 formal_parameter_2 ...)
expression_1 expression_2 ...
))
======================================================
let表达式:
(LET (
(name_1 expression_1)
(name_2 expression_2)
...
(name_n expression_n)
)
expression_1 expression_2 ..
)
======================================================
一些数值运算函数:
(SQRT a) :a的平方根
(EXPT a b) :a的b次幂
(REMAINDER a b) :a模b
(LOG a) :a的自然对数
(SIN a) :a的正弦值,其中a是弧度
======================================================
输入/输出:
(DISPLAY expression)
(NEWLINE)
分享到:
相关推荐
这可能涉及到Xcode的Scheme设置,以及JUnit或XCResult等格式的测试报告。理解这些内容有助于提升开发流程的效率和代码质量。 总之,虽然懒人笔记项目不再更新,但它依然是一座丰富的学习宝库。通过深入研究其源代码...
* 加载自定义 UI 方案:自定义菜单 -> load custom UI scheme -> 浏览 3D 安装文件夹(D:\program files\Autodesk\3Ds max9\UI)-> Default UI(默认) ame-dark(黑色) * 显示 UI:自定义菜单 -> show ui -> show ...
Android Intent 学习笔记
HTTP学习笔记 HTTP协议是万维网的基础协议,主要规定了浏览器和万维网服务器之间的相互通信规则。下面是对HTTP协议的详细介绍: 一、HTTP协议的定义 HTTP协议(超文本协议)是一种详细规定了浏览器和万维网...
### 华三攻城狮笔记交换机最常用配置整理 #### 一、登录方式典型配置 在华三(H3C)交换机中,登录方式的配置是非常基础且重要的环节,它涉及到网络设备的安全性和易用性。根据不同的安全需求,可以采用多种登录...
### OAF 开发笔记知识点详解 #### 一、AM设置与命名规范 ##### AM设置 在Oracle Application Framework (OAF)开发中,AM(Application Module)是管理业务逻辑的关键组件。为了防止对象钝化(即对象状态丢失),需...
**Nginx简介** ...它以其高并发、低内存消耗以及稳定的工作性能而受到广泛赞誉。... **Nginx安装** ...提供的“nginx笔记+资料”压缩包应该包含了更详细的信息,可以帮助你进一步掌握Nginx的相关知识。
笔记 缺少文档,自Mini-Scheme以来,我添加了许多功能,因此需要新文档。 现在,您必须浏览C ++源代码和init.scm文件,以了解可用的标准函数以及它们的作用。大多数新功能都是作为可选扩展实现的,因此可以在构建时...
在哈工大的《数据结构与算法》以及...而其中的C/C++/JAVA/Python的学习笔记和资料则为深入理解和应用这些语言提供了丰富的素材。无论你是准备考试、做项目,还是进行个人学习,这个资源包都是一个不可多得的宝藏。
的学习笔记 学习笔记与练习项目源码整理 The Only Easy Day Was Yesterday 编程语言 C 参考书籍 : 《c primer plus》 6th edition 书内习题答案总结 , 优秀源码赏析 快速平方根算法 kilo (1000行的源文本编辑器) ...
但实际上它的语法风格与Self及Scheme较为接近。[1] 为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为...
物理层还涉及到调制与编码方案(MODulation and COding Scheme, MCS),包括BPSK、QPSK、16-QAM、64-QAM等,它们决定了数据在无线信号中表示的方式。不同的MCS等级对应不同的数据传输速率和信号质量。 在媒体访问...
5. **简明过程式语言的指称语义**(第7,8章):这部分内容可能涉及到对简单过程式语言如Lisp或Scheme的基本概念和语义的解释,包括函数调用、参数传递和控制结构的处理。 这些笔记内容全面且深入,对于想要深入理解...
"Python爬虫笔记" Python爬虫笔记是指使用Python语言来实现网络爬虫程序的技术笔记。爬虫程序可以模拟人类请求网站行为,自动请求网页、抓取数据,并使用一定的规则提取有价值的数据。 爬虫的实际例子包括搜索引擎...
We construct a simple fully homomorphic encryption scheme, using only elementary modular arithmetic. We use Gentry’s technique to construct a fully homomorphic scheme from a “bootstrappable” ...
Scheme sch = new Scheme("https", socketFactory, 443); HttpClient httpclient = new DefaultHttpClient(); httpclient.getConnectionManager().getSchemeRegistry().register(sch); ``` 这里,`your_password`是...
【标题】"6.945:高级符号编程冒险笔记" 涉及的主要内容是对高级符号编程语言的深入探讨,特别是围绕 Scheme 这一Lisp方言进行的。MIT(麻省理工学院)的6.945课程是为那些对计算机科学理论和实践有深厚兴趣的学生...
Zigbee是一种基于IEEE 802.15.4标准的低功耗无线通信技术,主要用于近距离、低速率的...通过这篇笔记,读者可以了解如何使用TI的Zigbee解决方案来满足大规模应用的需求,特别是在需要收集大量传感器节点数据的情况下。
8. **docs**:文档文件夹,可能包含设计文档、API参考、教程或者开发过程中的笔记,帮助开发者理解和修改项目。 综合以上信息,Scheme7是一个使用Python编程语言开发的开源ARPG游戏,它的源代码、资源和相关文档都...