Rascal:函数可以返回函数

问题描述 投票:0回答:2

Rascal文档中有一个example of a function,它以函数作为参数:

int f(int x, int (int) multi){ return multi(x); }

相反,返回函数的函数的语法是什么?

我找不到示例并尝试了以下方法:

(int (int)) f() {return (int y) {return y;}}

但是在表示中出现语法错误。

higher-order-functions rascal
2个回答
1
投票
int two(int n) = 2 * n; int(int) g() = two;

函数two乘以2,然后g返回函数two。观察到g的返回类型是int(int),这是一种描述返回int并具有一个int自变量的函数的类型。

可以通过内联定义获得类似的效果:

int(int) g() = int(int n) { return 2 * n; };

您可以在一些测试中的一些文件中找到更多示例:

lang::rascal::tests::basic::Functions

    lang::rascal::tests::functionality::FunctionComposition
  • 感谢您的问题,我们还有更多文档要做!

  • 0
    投票

    f的返回类型中保留最外面的parens

      添加int返回的匿名函数的返回类型f
    • 不要忘记freturn语句后的半数
  • 给出:
  • int (int) f() { return int (int y) { return y; } ; }
  • © www.soinside.com 2019 - 2024. All rights reserved.