Rascal文档有一个example of a function,该函数将函数作为参数:
int f(int x, int (int) multi){ return multi(x); }
相反,返回函数的函数的语法是什么?
我找不到示例并尝试了以下方法:
(int (int)) f() {return (int y) {return y;}}
但在副本中出现语法错误。
答案 0 :(得分:2)
这里是一个例子:
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; };
您还可以在其他函数中使用相同的符号。例如,您可以创建一个将两个数字相乘的函数:
int mult(int n, int m) = n * m;
如果使用它,您将得到期望的结果:
rascal>mult(3,4);
int: 12
您可以改为返回一个基本上部分地应用此函数的函数,如下所示:
int(int) multBy(int n) {
return int(int m) {
return mult(n,m);
};
}
int (int) (int)
因此,这将返回接受int
并返回int (int)
的函数,即,接受int
并返回int
的函数。然后,您可以按以下方式使用它:
rascal>multBy3 = multBy(3);
int (int)
rascal>multBy3(4);
int: 12
您可以在一些测试中的一些文件中找到更多示例:
lang::rascal::tests::basic::Functions
lang::rascal::tests::functionality::FunctionComposition
感谢您的问题,我们还有更多文档要做!
答案 1 :(得分:1)
我失败尝试的简短答案是:
server {
listen 80;
server_name 68.183.203.33 yahkut.com www.yahkut.com;
return 301 https://$server_name$request_uri;
# Stop here, it's will be redirect to HTTPS. There's no left to execute
}
server {
listen 443 ssl;
server_name yahkut.com www.yahkut.com;
ssl_certificate /path/to/certificate/your_domain_chain.crt;
ssl_certificate_key /path/to/your_private.key;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/leptitoxadmin/pyapps/Leptitox;
}
location /media/ {
root /home/leptitoxadmin/pyapps/Leptitox;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
的最外面的括号f
返回的匿名函数的返回类型int
f
的{{1}}语句后的半音给出:
f