首页 > 解决方案 > 将 Scheme 转换为 C++

问题描述

我得到了一个任务,我必须将一个 Scheme 函数转换为一个 C++ 函数。这是Scheme函数:

(DEFINE someFunction
   (LAMBDA (n)
      (IF (>= n 0)
         n
         (- 0 n))))

如果我错了,请纠正我,但 DEFINE 将名称 , 绑定someFunction到 LAMBDA 表达式 , n。如果n大于或等于 0,则n简单地返回。否则,0 - n返回。

这是我将其转换为 C++ 时的想法:

int someFunction() {
   int n;
   if (n >= 0) 
      return n;
   else
      return (0 - n);
}

我做对了吗?任何提示都会有所帮助!我想知道我做错了什么,所以不要退缩。

标签: c++lambdaschemetranslate

解决方案


您错过了一个问题:nlambda 表达式中的 是一个函数参数。在您的 C++ 代码中,您将其声明为局部变量(未初始化,因此具有未定义的值)

更好的解决方案是:

int someFunction(int n) {
   if (n >= 0) 
      return n;
   else
      return (0 - n);
}

推荐阅读