04 2014 档案

摘要:当我写到这里的时候,我自己都吃了一惊。 环境、存储这些比较让人耳熟的还没讲到,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 古霜卡比 阅读(3726) 评论(5) 推荐(5) 编辑