将高阶函数称为“模板”是否正确?

问题描述

最小例子:假设我有高阶函数

const my_fn = (a) => (b) => a + b

那个,当这样调用时:

my_fn(42)

返回函数 (b) => 42 + b

my_fn 称为“模板函数”是否正确?

我知道,在诸如 C++ 之类的语言中,“模板”一词具有非常具体的技术含义。 但是在 JavaScript 中,(AFAIK) 没有像 C++ 那样的语法内置模板。

我不想滥用术语。

将 JS 中的高阶函数称为模板函数是否正确,反之亦然?

(相关,可选问题:在 JS 中巧妙地使用高阶函数在这种语言中进行“泛型编程”有区别吗?)

解决方法

我不会称其为“模板”函数,尽管我可能会称此函数为“函数工厂”。对我而言,C++ 等语言中的“模板”一词意味着将一个函数应用于一系列不同数据类型的特定目标。

像您提供的示例这样的函数在“泛型编程”方面并没有真正实现任何新的东西,因为它不是设计用来生成对不同类型的值进行操作的函数。 Javascript 对类型并不严格,因此您可以将任何类型的值传递给您的函数,并且该语言将尽最大努力使用它。你不需要做任何额外的事情来使一个函数适用于不同类型的对象;除非程序员添加明确的类型检查逻辑,否则每个函数都接受各种对象。