摘要: 或许在加入continuation之前要先讲讲费这么大劲做这个有什么意义。 毕竟用不用continuation的计算结果都是一样的。 不过,这是一个兴趣使然的系列,学习这些知识应该完全出于好奇与好玩的想法。 所以我才不会告诉你们通过控制continuation可以实现call-with-curren... 阅读全文
posted @ 2014-05-03 10:27 古霜卡比 阅读(948) 评论(0) 推荐(3) 编辑
摘要: 这一篇接在第一篇lambda演算的后面。讲讲一些数学知识。经常有些看似很容易理解的东西,一旦要描述得准确无误,就会变得极为麻烦。 软件工程里也有类似情况:20%的代码实现了核心功能,剩下80%的代码处理边界情况。 于是,所谓的准确描述里的大部分文字都在说明边界情况,核心概念只有寥寥几字——好比一件打... 阅读全文
posted @ 2014-05-02 11:41 古霜卡比 阅读(1019) 评论(0) 推荐(2) 编辑
摘要: 当我写到这里的时候,我自己都吃了一惊。 环境、存储这些比较让人耳熟的还没讲到,continuation先出来了。 维基百科里对continuation的翻译是“延续性”。 这翻译看着总有些违和感而且那个条目也令人不忍直视。 总之continuation似乎没有好的中文翻译,仿佛中国的计算机科学里没有... 阅读全文
posted @ 2014-04-28 11:18 古霜卡比 阅读(1313) 评论(2) 推荐(2) 编辑
摘要: 这个系列有个显著的特点,那就是标题越来越长。忽然发现今天是读书节,读书节多读书。==下面是没有意义的一段话================================================我是一个喜欢从学习知识中获得乐趣并乐于分享这种乐趣的人。我认为大部分知识只要花点时间都是能学会的。... 阅读全文
posted @ 2014-04-23 09:52 古霜卡比 阅读(1254) 评论(4) 推荐(2) 编辑
摘要: 最近整理些东西,鬼使神差想起“数学是怎样一步步脱离大众”这一问题。数学一开始还是很接地气的。像讨价还价、投机倒把等日常活动都离不开一些数学计算。其实,不仅限于数学,其他领域应该也是如此,从现实起步,慢慢地发展到无法直视的哲学高度去了。 数学的很多概念并没有人们想像地那么难以理解。很多困难主要源于这... 阅读全文
posted @ 2014-04-22 10:22 古霜卡比 阅读(2560) 评论(9) 推荐(4) 编辑
摘要: 递归。哦,递归。 递归在计算机科学中的重要性不言而喻。 递归就像女人,即令人烦恼,又无法抛弃。先上个例子,这个例子里的函数double输入一个非负整数$n$,输出$2n$。 \[ {double} = \lambda n.({if} \; ({iszero} \; n) \; 0 \; (+ \; ... 阅读全文
posted @ 2014-04-21 10:24 古霜卡比 阅读(1536) 评论(7) 推荐(3) 编辑
摘要: let表达式let表达式用来声明一个变量。 比如我们正在写一个模拟掷骰子游戏的程序。 一个骰子有6个面。 所以这个程序多次用到了6这个数字。 有一天,我们忽然改变主意,要玩12个面的骰子。 于是我们不得不仔细查找源代码,把里面的6改成12。 对于一个较大的程序,这是灾难的开始。 有时我们会漏掉几个6... 阅读全文
posted @ 2014-04-19 10:10 古霜卡比 阅读(1379) 评论(0) 推荐(1) 编辑
摘要: 为了有条不紊地实现一个解释器,我将按以下三个步骤走:明确语法针对语法描述求值过程根据求值过程编写代码实现语法\(\lambda\)演算不适合作为一门实际使用的程序语言。 \(\lambda\)演算只有变量和函数两种类型,而其他常用类型如整数、布尔、字符等都没有。 虽然可以通过编码的方式表示这些常用类... 阅读全文
posted @ 2014-04-18 09:44 古霜卡比 阅读(1503) 评论(2) 推荐(1) 编辑
摘要: 最近比较闲,打算整理一下之前学习的关于程序语言的知识。主要的内容其实就是一边设计程序语言一边写解释器实现它。这些知识基本上来自Programming Languages and Lambda Calculi和Essentials of Programming Languages这两本书。我还记得高中... 阅读全文
posted @ 2014-04-17 11:29 古霜卡比 阅读(3724) 评论(5) 推荐(5) 编辑
摘要: 真真地被matplotlib的中文显示折磨的不行了。简要记下解决方案,防止以后重新配又是蛋疼菊紧。我的环境:系统是Ubuntu 13.04,Python是系统自带的,matplotlib是apt安装的。中文字体以前有装过。首先是编码问题在Python代码的第二行加上编码声明(编码声明可以放在第一行或者第二行,但是第一行放shebang了):# -*- coding:utf-8 -*-顺便记一下在Emacs下如何查看当前编码:M-x describe-coding-system然后是字体问题将/etc/matplotlibrc复制到~/.matplotlibrc/。如果配坏了就删了~/.matp 阅读全文
posted @ 2013-12-06 13:02 古霜卡比 阅读(4064) 评论(0) 推荐(1) 编辑