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中更改它们的参数。