Class 成员变量是绑定的还是自由的(就组合子而言)?

Is A Class Member Variable Bound Or Free (In Terms Of Combinators)?

虽然我意识到我不是很严谨,但我很确定组合子的定义简单来说就是一个没有自由变量的函数。例如,

f(x,y) = x + y

将是一个组合子并且

f(x,y) = x * 2

不会是因为你有空。

那么考虑到理解 class 定义中的成员变量会被视为 "free" 吗?我猜它会,但我想检查我的假设。像这样的 C# 示例代码:

namespace ConsoleApplication1
{
    class BoundOrFree
    {
        private int _i = 0;

        public int f(int x, int y)
        {
            return x + y + _i;
        }
    }
}

在BoundOrFree.f成员函数中_i是空闲的吗?因此 f 不是组合子吗?我假设这两个问题的答案都是肯定的,但我想确认我的假设。

would not be because y would be free

您误解了本例中的 "free" 术语。自由变量是从外部范围(通过闭包)捕获的变量。所以 f(x,y) = x * 2 一个组合子。

回答您的问题

In the BoundOrFree.f member function is _i free? Would f therefore not be a combinator?

BoundOrFree::f 函数不是组合子,因为它使用的变量不是它唯一的参数。