|
|
1
1
在javascript中,我使用回调函数(因为它们在被调用(从调用者)之后不能被传递任何参数)
我不确定这是否足够详细或连贯。。。但是currying基本上允许您“预先填充”参数并返回一个已经填充了数据的裸函数调用(而不是要求您在其他点填充该信息) |
|
|
2
5
咖喱有很多用途。从简单地为经常使用的函数指定默认参数到返回为特定目的服务的专用函数。
|
|
|
3
1
在以函数样式编程时,通常会绑定参数以从旧函数生成新函数(在本例中为谓词)。伪代码:
可能相当于:
哪里
|
|
|
4
0
在许多情况下,要省略的参数在编译时是未知的,而在运行时是未知的。此外,对于给定函数可能存在的curried委托的数量没有限制。以下是改编自现实世界的程序。 我有一个系统,在这个系统中,我向远程机器发送命令包,并接收回响应包。每个命令包都有一个索引号,每个回复都带有它作为响应的命令的索引号。翻译成英语的一个典型命令可能是“从地址0x12300开始给我128字节”。一个典型的响应可能是“成功”以及128字节的数据。 为了处理通信,我有一个例程,它接受许多命令包,每个命令包都有一个委托。当接收到每个响应时,相应的委托将在接收到的数据上运行。与上述命令相关联的委托类似于“确认我获得了128字节数据的‘成功’,如果是这样,将它们存储到地址0x12300的缓冲区中”。注意,多个分组在任何给定时间都可能是未完成的;curried address参数是例程知道传入数据应该去哪里所必需的。即使我想写一个不需要地址参数的“将数据存储到缓冲区”例程,它也无法知道传入的数据应该去哪里。 |