Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_scheme
提交
1d3ca8e2
skill_tree_scheme
项目概览
CSDN 技术社区
/
skill_tree_scheme
通知
1
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
skill_tree_scheme
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
1d3ca8e2
编写于
10月 21, 2022
作者:
G
guenchi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
a1f56875
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
36 addition
and
38 deletion
+36
-38
data/1.Scheme初阶/1.Scheme入门/2.一些解释和约定/exercise_02.md
data/1.Scheme初阶/1.Scheme入门/2.一些解释和约定/exercise_02.md
+0
-38
data/1.Scheme初阶/1.Scheme入门/3.标志符/exercise_03.md
data/1.Scheme初阶/1.Scheme入门/3.标志符/exercise_03.md
+36
-0
data/1.Scheme初阶/1.Scheme入门/4.定义/exercise_04.md
data/1.Scheme初阶/1.Scheme入门/4.定义/exercise_04.md
+0
-0
data/1.Scheme初阶/1.Scheme入门/5.数据类型/exercise_05.md
data/1.Scheme初阶/1.Scheme入门/5.数据类型/exercise_05.md
+0
-0
未找到文件。
data/1.Scheme初阶/1.Scheme入门/2.一些解释和约定/exercise_02.md
浏览文件 @
1d3ca8e2
# 禁止的符号
Scheme对标识符的宽容度远大于其他语言,你甚至可以在标识符里使用数学符号+-
*
/><,但仍有一些符号严格禁止使用在标志符里。
在Scheme里它们大多数是预留的读取器宏。
> 读取器宏是一种在编译前对代码进行替换的工具,你可以将它看作高级版的C语言宏。在Scheme的近亲语言,Common Lisp里你可以自由的编写读取器宏。在Scheme的世界里读取器宏被视作邪恶而混乱的,只预留了少量程序语言标准层面的读取器宏来简化程序编写。
```
#
```
编译器预留符号, 它用来表示字符,比如
`#\a #\b #\c`
。用来表示进制数,比如
`#b100 #x7C0`
,用来表示向量,比如
`#(1 2 3)`
。用来表示编译器行为钩子,比如
`(#3%display "Hello,World!")`
在ChezScheme中表示强制用第三级优化火力全开的display hello world。
```
' 单引号
```
读取器宏,
`'object`
将在编译前被替换成
`(quote object)`
。它也用来表示列表,如
`'(a b c)`
.
> 在Scheme中,quote有重要的作用,它代表标志符的符号的一面。而不被quote住的标志符代表它作为程序的一面。LISP与其他程序语言最大的区别即是代码即是数据,数据即是代码。在这种情况下我们必须明确一个标志符在当下是否被自动进行求值。即它对编译器展现它名字的一面,还是它程序的一面。这个区别便由quote来表示。
```
` 往右斜的单引号
```
读取器宏,
```object``将在编译前被替换成`(quasiquote object)`。
```
, 逗号
```
读取器宏,`,object`将在编译前被替换成`(unquote object)`。
```
@
```
读取器宏,`,@object`将在编译前被替换成`(unquote-splicing object)`。
# 约定的代码风格
以下的代码风格并不由编译器严格要求,但是它能帮助你更好的编写Scheme程序,还有助于其他人更好的阅读你的代码。
...
...
data/1.Scheme初阶/1.Scheme入门/3.标志符/exercise_03.md
0 → 100644
浏览文件 @
1d3ca8e2
# 标志符
Scheme对标识符的宽容度远大于其他语言,你甚至可以在标识符里使用数学符号+-
*
/><,但仍有一些符号严格禁止使用在标志符里。
在Scheme里它们大多数是预留的读取器宏。
> 读取器宏是一种在编译前对代码进行替换的工具,你可以将它看作高级版的C语言宏。在Scheme的近亲语言,Common Lisp里你可以自由的编写读取器宏。在Scheme的世界里读取器宏被视作邪恶而混乱的,只预留了少量程序语言标准层面的读取器宏来简化程序编写。
```
#
```
编译器预留符号, 它用来表示字符,比如
`#\a #\b #\c`
。用来表示进制数,比如
`#b100 #x7C0`
,用来表示向量,比如
`#(1 2 3)`
。用来表示编译器行为钩子,比如
`(#3%display "Hello,World!")`
在ChezScheme中表示强制用第三级优化火力全开的display hello world。
```
' 单引号
```
读取器宏,
`'object`
将在编译前被替换成
`(quote object)`
。它也用来表示列表,如
`'(a b c)`
.
> 在Scheme中,quote有重要的作用,它代表标志符的符号的一面。而不被quote住的标志符代表它作为程序的一面。LISP与其他程序语言最大的区别即是代码即是数据,数据即是代码。在这种情况下我们必须明确一个标志符在当下是否被自动进行求值。即它对编译器展现它名字的一面,还是它程序的一面。这个区别便由quote来表示。
```
` 往右斜的单引号
```
读取器宏,
```object``将在编译前被替换成`(quasiquote object)`。
```
, 逗号
```
读取器宏,`,object`将在编译前被替换成`(unquote object)`。
```
@
```
读取器宏,`,@object`将在编译前被替换成`(unquote-splicing object)`。
\ No newline at end of file
data/1.Scheme初阶/1.Scheme入门/4.定义/exercise_04.md
0 → 100644
浏览文件 @
1d3ca8e2
data/1.Scheme初阶/1.Scheme入门/5.数据类型/exercise_05.md
0 → 100644
浏览文件 @
1d3ca8e2
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录