对于delapplicativeorder/delY!h=(Y-bang1biz)=(Y-bangbiz)=(bizh)=(lambda(a)(if(=ax)0(ha)))withfreevariablexofvalue1,也就是说,先求了一次h=(bizh)=某lambda,再求(某lambda0)对于delnormalorder/delY,求((Ybiz)0)先求(Ybiz),求值的过程中(set!x(+x1)),展开得到了某lambda:(lambda(a)(if(=ax)0(fa))),这里面f是某一大坨东西,不过lambda延迟求值先不用管.然后求(某lambda0)得到(f0)然后发现这时候得到的式子和((Ybiz)0)是一样的,只不过xinc了,从而循环中包含了incx.发明这俩东西的人真是个人才(不知道有没有什么编译技术能把用YC写的递归函数改成letrec递归函数.Casper (311.5:Esistvollbracht!) 在 ta 的帖子中提到:(昨晚刚看完那一章,过来回答一下第1个问题……)问题不在于函数“含状态”,而在于biz这个高阶函数里set!的位置:用letrec之类宏来定义递归函数时,外面的那一层(lambda(f)...)是宏生成的,……
|