Scheme 方案-功能“;如果;
在下一个代码中Scheme 方案-功能“;如果;,scheme,Scheme,在下一个代码中 (if (exp1) (Do1) (Do2)) 当exp1为true时,(Do1)正在发生。我的问题是,如果条件为真,我想做两件事。意思-我想添加一个到列表的链接,并再次调用该函数 so Do1 in my program is: ((cons (car hello) list1) (Myfunction (cdr data) list1)) 这给了我下一个问题: procedure application: ex
(if (exp1)
(Do1)
(Do2))
当exp1为true时,(Do1)正在发生。我的问题是,如果条件为真,我想做两件事。意思-我想添加一个到列表的链接,并再次调用该函数
so Do1 in my program is:
((cons (car hello) list1)
(Myfunction (cdr data) list1))
这给了我下一个问题:
procedure application: expected procedure, given: ((439043 Mylist)); arguments were: ()
我怎么做
谢谢。只需使用
begin
-例如:
(begin
(cons (car hello) list1)
(Myfunction (cdr data) list1))
只需使用
开始
——例如:
(begin
(cons (car hello) list1)
(Myfunction (cdr data) list1))
您可以使用(begin)
将一组语句放入一个组合中但是,我不认为这是您想要的。在这里(cons(car hello)list1)
有什么效果?没什么(cons)
返回一个列表,它不改变任何参数
所以事实上,我认为您希望do1
成为(Myfunction(cdr数据)(cons(carhello)list1))
这只是一条语句,可以在(if)
的结果中使用,而无需使用(begin)
您可以使用(begin)
将一组语句组合成一个组合但是,我不认为这是您想要的。在这里(cons(car hello)list1)
有什么效果?没什么(cons)
返回一个列表,它不改变任何参数
所以事实上,我认为您希望do1
成为(Myfunction(cdr数据)(cons(carhello)list1))
这只是一个单独的语句,可以在
(if)
的结果中使用,而不使用(begin)
虽然从语法上来说这是正确的答案,但drysdam确实提出了一个很好的观点-您确定不需要(cons)的结果吗?虽然从语法上来说这是正确的答案,drysdam确实提出了一个很好的观点-你确定你不需要(缺点)的结果吗?谢谢!非常感谢。它起作用(begin在运行时没有帮助)begin
没有帮助的原因是cons
在该版本中没有做任何事情。只有以a结尾的函数!(如set!
)在Scheme中更改它们的参数。谢谢!非常感谢。它起作用(begin在运行时没有帮助)begin
没有帮助的原因是cons
在该版本中没有做任何事情。只有以a结尾的函数!(如set!
)在Scheme中更改它们的参数。