История изменений
Исправление MOPKOBKA, (текущая версия) :
Суть не в том что код делает, а в том можно ли его выразить на языке X.
Если вообще ничего непонятно, вот простой пример рекурсивного типа без использования замыканий. auto в С++ должен сам выводить подходящий тип, в C# для этого есть var, но он вроде не для функций.
auto f()
{
return f;
}
void main()
{
f()()()()()()();
}
Как видно по ОП-посту, многие языки не могут повторить это, потому что тип будет рекурсивен.
Даже С++ не может это скомпилировать, не знаю какую там магию надо применить, но с лямбдами работает:
void main()
{
auto f = [](this auto self)
{
return self;
};
f()()()()()()();
}
Исправление MOPKOBKA, :
Суть не в том что код делает, а в том можно ли его выразить на языке X.
Если вообще ничего непонятно, вот простой пример рекурсивного типа без использования замыканий. auto в С++ должен сам выводить подходящий тип, в C# для этого есть var, но он вроде не для функций.
auto f()
{
return f;
}
void main()
{
f()()()()()()();
}
Как видно по ОП-посту, многие языки не могут повторить это, потому что тип будет рекурсивен.
Даже С++ не может это скомпилировать, не знаю какую там магию надо применить, но с лямбдами работает:
void main()
{
auto f = [](this auto self) {
return self;
};
f()()()()()()();
}
Исправление MOPKOBKA, :
Суть не в том что код делает, а в том можно ли его выразить на языке X.
Если вообще ничего непонятно, вот простой пример рекурсивного типа без использования замыканий. auto в С++ должен сам выводить подходящий тип, в C# для этого есть var, но он вроде не для функций.
auto f()
{
return f;
}
void main()
{
f()()()()()()();
}
Как видно по ОП-посту, многие языки не могут повторить это, потому что тип будет рекурсивен.
Даже С++ не может это скомпилировать, не знаю какую там магию надо применить, но с лямбдами работает:
int main()
{
auto f = [](this auto self) {
return self;
};
f()()()()()()();
}
Исправление MOPKOBKA, :
Суть не в том что код делает, а в том можно ли его выразить на языке X.
Если вообще ничего непонятно, вот простой пример рекурсивного типа без использования замыканий. auto в С++ должен сам выводить подходящий тип, в C# для этого есть var, но он вроде не для функций.
auto f()
{
return f;
}
void main()
{
f()()()()()()();
}
Как видно по ОП-посту, многие языки не могут повторить это, потому что тип будет рекурсивен.
Исходная версия MOPKOBKA, :
Суть не в том что код делает, а в том можно ли его выразить на языке X.
Если вообще ничего непонятно, вот простой пример рекурсивного типа без использования замыканий. auto в С++ должен сам выводить подходящий тип, в C# для этого есть var, но он вроде не для функций.
auto f()
{
return f;
}
void main()
{
f()()()()()()();
}
Как видно по ОП-посту, многие языки не могут повторить это, потому что тип будет рекурсивен.