是否有任何编程语言将功能视为可以操作的数据结构?

pyo*_*yon 1 language-features programming-languages functional-programming code-injection homoiconicity

我编写了以下函数作为我正在开发的jQuery插件的一部分:

$.fn.append2 = function(collection, callback) {
    var $this = this;

    $.each(collection, function(key, value) {
        $this.append(callback ? callback(key, value) : value);
    });

    return this;
};
Run Code Online (Sandbox Code Playgroud)

在测试了一个高度依赖的高度递归函数之后.append2,我优化.append2了:

$.fn.append2 = function(collection, callback) {
    var $this = this;

    $.each(collection, callback
        ? function(key, value) { $this.append(callback(key,value)); }
        : function(key, value) { $this.append(value); }
    );

    return this;
};
Run Code Online (Sandbox Code Playgroud)

虽然这个代码在速度方面更有效,但它仍然让我不满意.基本上,我有两次定义相同的函数:

function(key, value) { $this.append(callback(key,value)); }
function(key, value) { $this.append(value); }
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何语言可以让我只定义一次函数:

function(key, value) { $this.append(value); }
Run Code Online (Sandbox Code Playgroud)

然后通过将参数替换为$this.appendfrom value来对其进行操作callback(key, value).(并且,不,不是通过操纵字符串.通过操纵函数本身.)

有没有这样的编程语言?

mun*_*ent 5

任何同性语言都可以让你在某种程度上做到这一点.所有的Lisp语言都允许您从程序上逐个地构建函数,然后像往常一样调用它们.在木卫一的语言是如此罕见,我相信它会让你走另一条路:给定一个功能,你可以拉开它的源代码,并操纵它.