{"componentChunkName":"component---src-templates-blog-post-js","path":"/the-little-schemer-summary-1/","result":{"data":{"site":{"siteMetadata":{"title":"星雨之夜"}},"markdownRemark":{"id":"3f53e215-0dcb-55a0-bf67-35e8fb235192","excerpt":"此系列按照章节整理了 「The Little Schemer：递归与函数式的奥妙」 的全书知识点。 备忘录，仅供参考。 Scheme 五法 car 之法则 基本元件  仅定义为针对非空列表。 cdr 之法则 基本元件  仅定义为针对非空列表。任意非空列表的  总是另一个列表。 cons…","html":"<p>此系列按照章节整理了 <a href=\"https://book.douban.com/subject/27080946/\">「The Little Schemer：递归与函数式的奥妙」</a> 的全书知识点。</p>\n<p>备忘录，仅供参考。</p>\n<h2>Scheme 五法</h2>\n<ol>\n<li>\n<p>car 之法则</p>\n<p>基本元件 <code class=\"language-text\">car</code> 仅定义为针对非空列表。</p>\n</li>\n<li>\n<p>cdr 之法则</p>\n<p>基本元件 <code class=\"language-text\">cdr</code> 仅定义为针对非空列表。任意非空列表的 <code class=\"language-text\">cdr</code> 总是另一个列表。</p>\n</li>\n<li>\n<p>cons 之法则</p>\n<p>基本元件 <code class=\"language-text\">cons</code> 需要两个参数。第二个参数必须是一个列表。结果是一个列表。</p>\n</li>\n<li>\n<p>null? 之法则</p>\n<p>基本元件 <code class=\"language-text\">null?</code> 仅定义为针对列表。</p>\n</li>\n<li>\n<p>eq? 之法则</p>\n<p>基本元件 <code class=\"language-text\">eq?</code> 需要两个参数。每个参数都必须是一个非数字的原子。</p>\n</li>\n</ol>\n<h2>基本元件使用方法</h2>\n<p><code class=\"language-text\">(car l)</code> : 获取列表 <code class=\"language-text\">l</code> 的第一个 S-表达式。<br>\n<code class=\"language-text\">(cdr l)</code> : 获取列表 <code class=\"language-text\">l</code> 去除 <code class=\"language-text\">(car l)</code> 的部分。<br>\n<code class=\"language-text\">(cons a l)</code> : 将 <a href=\"https://en.wikipedia.org/wiki/S-expression\">S-表达式</a> <code class=\"language-text\">a</code> 添加到列表 <code class=\"language-text\">l</code> 的开头处。<br>\n<code class=\"language-text\">(null? l)</code> : 判断列表 <code class=\"language-text\">l</code> 是否为空列表。<br>\n<code class=\"language-text\">(eq? a b)</code> : 判断 <code class=\"language-text\">a</code> 和 <code class=\"language-text\">b</code> 是否相等。</p>","frontmatter":{"title":"The Little Schemer 知识点整理（一）：玩具总动员","date":"2018 年 12 月 05 日","description":"第一章介绍了 Scheme 语言中的几个基本元件及其使用规则和方法。问答式的学习方式让人眼前一亮。"}}},"pageContext":{"slug":"/the-little-schemer-summary-1/","previous":{"fields":{"slug":"/simplified-installation-steps-for-archlinux/"},"frontmatter":{"title":"Arch Linux 的简化版安装步骤整理"}},"next":{"fields":{"slug":"/the-little-schemer-summary-2/"},"frontmatter":{"title":"The Little Schemer 知识点整理（二）：处理，处理，反复处理……"}}}}}