说明:此文内容纯属个人看法,无所谓对错,欢迎拍砖!
call/cc(call-with-current-continuation)是函数编程的顶级概念,虽然我们用到的场合不是太多,但重要性非比寻常。
call/cc的魔力在于迫使运行的程序通过时光隧道返回到从前的某个时刻。
从返回的方式看我们可以有多种理解,下面是最常见的两种:
1、逐步退回:一步就是一次函数调用。执行call/cc时,程序自动执行函数返回操作(RET),直到返回的位置与call/cc的要求一致。
2、直接跳转:程序的指令系统直接切换到call/cc的位置,被抛掉的运行节点和对象留给GC处理。
命令式语言(如C/C+ ...
- 16:12
- 浏览 (310)
- 评论 (0)
很高兴今天能发布这个声明:
经过不懈努力,Lysee于今晨8:30释出1.1.0.5511版本,新版本初步实现了语法定义,帮助Lysee又向前“挪了”一步!
首先向Scheme/Lisp、Haskell、Perl、Python还有其它语言表示一下尊敬:
syntax void thanks(%(you) AND %(he))
{
= "thanks!", you, "and", he;
}
thanks "scheme/lisp" AND "haskell, python, perl and others";
“syntax”是为Lysee新定义的关键字,用于向 ...
- 09:30
- 浏览 (764)
- 论坛浏览 (1333)
- 评论 (3)
模式匹配是个老概念了,它并不是函数式编程的必须内容,但函数式语言通常都实现了模式匹配,而大部分的命令式语言都空缺了这一块儿,所以给大家留下的印象就是模式匹配只在函数式编程中出现。
下面是一个常规的Fib编码:
public int fib(int n)
{
if (n < 2) return 1;
return fib(n - 2) + fib(n - 1);
}
// 伪代码
public int fib(int n)
{
PUSH_VARB n
PUSH_INT 2
CALC <
JMPF 000 ...
- 11:04
- 浏览 (456)
- 论坛浏览 (596)
- 评论 (0)
Lysee 表达式中的运算符按优先级排列分为以下几种:
NEG : - | NOT : not | BNOT: ~ | FMT : @ | | | 单目 : 最高
MUL : * | DIV : / | IDIV: \ | MOD : % | | | 乘除模: 1
ADD : + | DEC : - | | | | | 加减 : 2
BXOR : ^ | BAND: & | BOR : ...
- 11:31
- 浏览 (262)
- 评论 (0)
Lysee 写标准输出有以下三种方式:
1、使用输出操作符“=”:
调用格式: = v1, v2, ..., vn;
// 代码
= "\"RTFSC!\"", "stands for", "\"Read The F**king Source Code!\"";
// 输出
"RTFSC!" stands for "Read The F**ing Source Code!"
“=”输出时自动在逗号分隔的变量间加入一个空格。
2、使用sys::print()函数:
函数原型:public void sys::print(string Str)
// ...
- 17:31
- 浏览 (257)
- 评论 (0)
Lysee 的标识符分以下两种:
1、常规标识符:
遵循C/C++/Java标准,整个标识符由字符['a'..'z', 'A..'Z', '0'..'9']和下划线'_'构成且第一个字符不能是数字。
示例:max
// 代码
public variant max(variant v1 v2)
{
return v1 > v2 ? v1 : v2;
}
= max(1, 2), eol;
= max("hello", "world"), eol;
// 结果
2
world
关键字和保留字属于常规标识符的范围。
示例:true fals ...
- 16:48
- 浏览 (256)
- 评论 (0)
Lysee核心代码中的日志提醒我2003年2月26日是Lysee的生日,而准备工作早在1999年就已经开始了。
2000年我转业后回到郑州,找到了一份专职软件开发的工作,为政府机关提供数据处理服务,我的面比较窄,基本用Delphi和C包打天下,数据库则使用MSSQL和FireBird。
2001年碰到了Mr.Chen并一直合作到现在。Chen比我大两三岁,擅长Python、MySQL、TCL/TK和HTTP,是一等一的高手。 Chen的爱好是不断杂耍各种能够工作的文本文件,并讲解里面用到的数据字典、反射、绑定和其他一些当时在我看来可有可无的概念。在多年的工作中,我积累了自己专有的类库,久经 ...
- 16:39
- 浏览 (270)
- 评论 (0)
原文链接:http://flyingapplet.spaces.live.com/blog/cns!F682AFBD82F7E261!375.entry
书呆子的报复[译]
[译注]本文译自Paul Graham的文章“Revenge of the Nerds”。由于译者对Lisp一窍不通,所以不保证完全理解原作者的观点,更不保证能够全面准确地表达其观点。如果你觉得上面这段话有点白痴,看原文吧。
书呆子的报复
2002年5月
“我们争取的是C++程序员。我们已经成功地把很多人从转向Lisp的半路上给拉过来了。”
- Guy Steele,Java规范作者之一
软件行业里一直有两股力 ...
- 11:32
- 浏览 (345)
- 论坛浏览 (433)
- 评论 (0)
生成器可以看作为程序提供连续输入的流,输入类型通常固定为一种(比如整型),当然也可以是任意多的不同类型,下面探讨几种生成器的实现方法,题目是生成1...N的整形值:
一、大家都会的:
// 代码
public int seed = 0;
public int generator()
{
++ seed;
return seed;
}
// 使用
10.times { = generator() + " " };
// 结果
1 2 3 4 5 6 7 8 9 10
二、基于类实现:
// 代码
public class Ge ...
- 10:44
- 浏览 (364)
- 论坛浏览 (441)
- 评论 (0)
- 浏览: 3459 次
- 性别:

- 来自: 郑州

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
lysee 官方网站开张营业
RednaxelaFX 2008-05-20引用啊,来迟了。刚刚有空 ...
-- by libudi -
lysee 官方网站开张营业
啊,来迟了。刚刚有空在JavaEye逛的时候才发觉Lysee有新进展了,加油! ...
-- by RednaxelaFX -
lysee 官方网站开张营业
我认为,托管资源目前来说,主要是内存。不是handle。所谓托管资源,也就是由g ...
-- by 梁利锋 -
lysee 官方网站开张营业
猜的不错的话 GC 回收的托管资源,比如,链表、字典、内存流之类的,通常都是非托 ...
-- by libudi -
lysee 官方网站开张营业
google 了一下 Notification 和 FreeNotificati ...
-- by 梁利锋






评论排行榜