摘要: 实习的时候,自己的时间明显没有在学校的时候多啊。这次Kernel FP拖了很久,一个多月都还没写完。幸好语法分析器用了之前开发的Syngram,要不得多花一个月。Kernel FP的类型推导的代码实在是很难看,趁着又发现了一个Bug,重构一下。
内含代码
阅读全文
posted @
2008-10-27 05:23 陈梓瀚(vczh) 阅读(1981) |
评论 (6) |
编辑 收藏
摘要: Kernel FP的虚拟机设计起来比较别扭,主要还是因为laziness的问题。不过现在已经有了一个能用的想法了。
阅读全文
posted @
2008-10-18 23:29 陈梓瀚(vczh) 阅读(1528) |
评论 (1) |
编辑 收藏
摘要: 类型推导到这里也就结束了。虽然可能有点小bug,不过这个以后遇到再处理了。接下来的一个模块是跟类型推导没有耦合的新模块,两边可以平行处理。
Kernel FP的指令集不同于以往的指令集。因为作为一门纯函数式语言,就必须要有laziness。这就是说,凡是可以不运行的代码都一定不运行,凡是可以晚一点执行的代码一律等到需要的时候再执行。也就是说,参数传进函数的时候,传的是代码而不是值。因此指令集只能用来表达代码的逻辑结构。
阅读全文
posted @
2008-10-11 02:10 陈梓瀚(vczh) 阅读(1428) |
评论 (1) |
编辑 收藏
摘要: 有一些主函数的某些参数只在let-in表达式所定义的子函数使用,然后被主函数间接使用。今天修了一个bug支持了这种函数的类型推导。例子如下:
阅读全文
posted @
2008-10-08 08:19 陈梓瀚(vczh) 阅读(1351) |
评论 (0) |
编辑 收藏
摘要: 今天将Haskell的一部分列表处理函数抄进了Kernel FP里,坚持所有函数(模板函数)不写类型,而让编译器进行类型推导:
阅读全文
posted @
2008-10-07 08:10 陈梓瀚(vczh) 阅读(1273) |
评论 (0) |
编辑 收藏
摘要: 经过上一次的成功试验,这次终于完成了剩余的表达式类型的类型推导。过程及结果如下:
阅读全文
posted @
2008-10-06 06:47 陈梓瀚(vczh) 阅读(1492) |
评论 (1) |
编辑 收藏
摘要: 我终于在实验阶段解决了这个困扰了我5个月(虽然实际上我花了3个星期)的问题。目标是这样的:你写程序,可以尽可能的不写一些类型信息,譬如函数参数和返回值的类型信息等。我的编译器帮你把它的类型算出来。
内详,有例子、方法和模型。
阅读全文
posted @
2008-10-04 07:19 陈梓瀚(vczh) 阅读(1825) |
评论 (3) |
编辑 收藏
摘要: 经过了5个小时的艰苦奋斗,符号表终于计算出来了,而且也做了一部分语法分析。接下来的工作是类型推导。今天的结果如下。
阅读全文
posted @
2008-10-02 07:46 陈梓瀚(vczh) 阅读(1680) |
评论 (1) |
编辑 收藏
摘要: 输入:
pattern : 含有通配符*与?的字符串
string : 被匹配的字符串
输出:true与false代表匹配成功与失败
仅19行
阅读全文
posted @
2008-10-01 09:41 陈梓瀚(vczh) 阅读(1469) |
评论 (0) |
编辑 收藏
摘要: 语法分析器终于完成了,总共花了7个小时的时间。其中遇到了一些小问题,譬如lambda expression的\param->expression和let-in expression的let declaration-list in expression里面的expression需要尽可能长的解决办法。因为用了Syngram,所以不得不调整出符合需求的文法。
为了大概看一看文法有没有写对,我写了一个程序,读入KernelFP语言写的一份代码,将其格式化并输出。
阅读全文
posted @
2008-10-01 01:31 陈梓瀚(vczh) 阅读(1562) |
评论 (0) |
编辑 收藏