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
函数不是组合子,因为它使用的变量不是它唯一的参数。
虽然我意识到我不是很严谨,但我很确定组合子的定义简单来说就是一个没有自由变量的函数。例如,
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
函数不是组合子,因为它使用的变量不是它唯一的参数。