Сообщение Re[57]: The door от 18.07.2018 10:27
Изменено 18.07.2018 10:28 vdimas
Re[57]: The door
Здравствуйте, Ikemefula, Вы писали:
Вдогонку к этому:
Через такую-то мать можно дотолкать:
Список костылей:
from _ in new int[1] — выражение не может начинаться с let, поэтому делаем "фикстивный" цикл верхнего уровня;
let trick = trick<int>() — присваиваем переменной не само значение, а адрес другой (целевой) переменной;
fuck_the_system — присваиваем значение целевой переменной.
Вдогонку к этому:
Вопрос:
что помешало сделать так:
... var x = default; x = some_expression(other_variables); ...
и разрешить рекурсию прямо в выражениях?
Через такую-то мать можно дотолкать:
class Box<T> { public T value; }
static Box<IEnumerable<T>> trick<T>() => new Box<IEnumerable<T>>();
static IEnumerable<T> fuck_the_system<T>(Box<IEnumerable<T>> trick, IEnumerable<T> en) {
trick.value = en;
return en;
}
static void RecursionTest()
{
int[] source = new int[] { 1, 3, 1, 2, 3, 1, 3, 2, 1 };
var y = from _ in new int[1]
let trick = trick<int>()
let func = fuck_the_system(trick, source.Where((x, index) => RecursiveFilter(trick.value, x, index)))
from c in func
select c;
foreach (var x in y)
Console.WriteLine(x);
}
Список костылей:
from _ in new int[1] — выражение не может начинаться с let, поэтому делаем "фикстивный" цикл верхнего уровня;
let trick = trick<int>() — присваиваем переменной не само значение, а адрес другой (целевой) переменной;
fuck_the_system — присваиваем значение целевой переменной.
Re[57]: The door
Здравствуйте, Ikemefula, Вы писали:
Вдогонку к этому:
Через такую-то мать можно дотолкать:
Список костылей:
from _ in new int[1] — выражение не может начинаться с let, поэтому делаем "фиктивный" цикл верхнего уровня;
let trick = trick<int>() — присваиваем переменной не само значение, а адрес другой (целевой) переменной;
fuck_the_system — присваиваем значение целевой переменной.
Вдогонку к этому:
Вопрос:
что помешало сделать так:
... var x = default; x = some_expression(other_variables); ...
и разрешить рекурсию прямо в выражениях?
Через такую-то мать можно дотолкать:
class Box<T> { public T value; }
static Box<IEnumerable<T>> trick<T>() => new Box<IEnumerable<T>>();
static IEnumerable<T> fuck_the_system<T>(Box<IEnumerable<T>> trick, IEnumerable<T> en) {
trick.value = en;
return en;
}
static void RecursionTest()
{
int[] source = new int[] { 1, 3, 1, 2, 3, 1, 3, 2, 1 };
var y = from _ in new int[1]
let trick = trick<int>()
let func = fuck_the_system(trick, source.Where((x, index) => RecursiveFilter(trick.value, x, index)))
from c in func
select c;
foreach (var x in y)
Console.WriteLine(x);
}
Список костылей:
from _ in new int[1] — выражение не может начинаться с let, поэтому делаем "фиктивный" цикл верхнего уровня;
let trick = trick<int>() — присваиваем переменной не само значение, а адрес другой (целевой) переменной;
fuck_the_system — присваиваем значение целевой переменной.