从递归到 Y 组合子
2019 年 01 月 29 日本文是对「The Little Schemer」第九章后半段的再推导,也是对我学习 Scheme 过程的补充。主要讲述匿名函数如何递归,并由此引出 Y 组合子。
Twinkle 的博客
瞎折腾
本文是对「The Little Schemer」第九章后半段的再推导,也是对我学习 Scheme 过程的补充。主要讲述匿名函数如何递归,并由此引出 Y 组合子。
这一章介绍了“非一般性”递归,这样的递归可能会使函数进入无限循环或者引发悖论,比如“停机问题”。然后讨论了在函数无法被定义(名字)的情况下如何实现递归,即 Y 组合子。
这一章讲述了 Scheme 的柯里化,函数能够返回函数;以及在函数递归的过程中,构建 collector 来收集多个值。
本章介绍了 set(集合)、pair(对)和 rel(关联列表),它们描述了列表之间更深层次的关系。
本章介绍了如何引入辅助函数来构建高阶抽象,同时告诫我们抽象的同时也会引入更多风险,需要关注到其中的副作用。
前面几篇介绍完基础类型和基础知识后,这一章开始写星星函数(*)。在以前的基础上,完善了其中几个函数的语义。同时还强调,如果要对代码做简化或者优化,需要先保证功能的正确性,用我们学到的来描述就是要把每个问题都问完。
在写 「The Little Schemer」知识点整理 系列的时候,理想状态是我一口气把书看完,并快速概括出其中的要点并写下来。往往事与愿违。本文就是阅读此书过程中,“一口气”被分割成好几口气之后的附属品,根据这几天在 GitHub 上提交的几个有关代码高亮的 PR…
顾名思义,本章内容在跟数字打交道。介绍了 zero? / number? 等基本函数,然后引入了 add1 和 sub1 这两个在本章大显身手的函数,而后按部就班地教我们定义了数学运算中的加减乘除及其他方法。
第三章主要介绍了 cons 的用法,并一步步实现了移除、替换、插入元素等几个常用的函数。
第二章开始引入递归思想。看书的时候一开始没看懂,以为印错了,一模一样的内容出现了很多次,当发现问题所在的时候,不禁莞尔,原来如此啊。
第一章介绍了 Scheme 语言中的几个基本元件及其使用规则和方法。问答式的学习方式让人眼前一亮。
本文整理了在虚拟机里安装 Arch Linux 的步骤,简单到基本上只要按照命令一条一条跑就可以了。
本文介绍如何运用 hosts 和 nginx 建立本地反向代理,包括但不限于简化微信开发流程。
类似于 pkill,这里的实现是用 fish 函数包装一层 kill 命令。
备份当前使用的博客系统 Hexo 的设置,包括站点和主题配置。
爬虫一向都很有意思,当你把想要的内容从网络中抓取并保存下来的时候,一定会得到“占有”它的满满的幸福感 (๑´ڡ`๑) 大部分爬虫是很繁琐的,需要手动写出许多规则来过滤大部分的无效内容;有些就很简单了,可以通过网站提供的 API…
在彻底叛变到 VS Code 之前,整理一下安装 SublimeLinter 的步骤。
本文记录了使用 xfce 桌面系统时的一些配置。
花了比较久的时间体验了 Linux 的各种发行版。包括最多人使用的 Ubuntu,命令行从头配置到尾的 Arch Linux,Arch 的衍生版 Antergos,还有精美的大蜥蜴 openSUSE。
我们的征途是星尘大海。
本文不定时更新,首次发表于 2015 年 2 月 1 日,最后编辑于 2017 年 1 月 18 日。