请教一个Scheme语言的问题

来源:百度知道 编辑:UC知道 时间:2024/06/19 11:18:54
小弟刚开始学Scheme。。。有些弄糊涂了。。。请高手看一下这个程序吧
(define (f x)
(+ x 1))
(define (g y)
(+ (f x) y))
有个函数是f(x)=x+1 第一个式子我知道肯定没有问题的,关键第二个我弄不清了,我想让g(y)=f(x)+y, 可是似乎电脑不认识这个f(x)里的x了,说x: name is not defined, not a parameter, and not a primitive name. 是不是这个x电脑已经不认为是上一个define里的x了?
如果是这样,那请教一下如何把上一个define里f(x)算好的值继承到下一个式子里呢?
急死了,作业碰到一题类似的问题...

哦还有,要是把下面的g(y)换成g(x)同时式子里还有上面的f(x),电脑会不会认为是同一个x?
哪里有介绍不同define里变量的关系的内容?
谢谢了!!

学过C吧?
你这个相当于
int f(int x)
{
return x+1;
}

int g(int y)
{
return f(x) + y
}

你f里的x只是代表传入的参数,不是全局变量,也不是局部变量(即使是局部变量,f和g的定义处在不同作用域里面也不行的),你看上面的c语句,那个x系统能知道是什么吗?

想要获得(f x)算出的值只有通过全局变量进行中转。

g(y)换成g(x)和上面的f(x)不会冲突,因为只是代表函数参数,本身也处于不同作用域,不会冲突。

我个人觉得你的需求没有什么实际意义,你可以直接baidu发消息给我,在探讨。