История изменений
Исправление kaldeon, (текущая версия) :
Любой боксинг стирает тип, что ломает типовую/железячную рекурсию.
Как понять стирает тип? Вот боксинг:
// тип является функцией, которая возвращает этот же тип
type fn func() fn
Вот железячная рекурсия:
// структура содержит сама себя
struct st {
struct st st;
}
Очевидно, что структура не может содержать себя, ровно как и в почтовую упаковку не уместить идентичную упаковку, сохранив её идентичность.
Боксинг позволяет абстрагироваться от типов, полностью соответствующих железу. Но на камне не написано, что типы должны соответствовать материальным объектам. Типы в боксинге остаются типами и могут подразделяться на дин/стат.
А практически все «сишники» думают у функции тип void(*)(int), а что такое void(int) они знать не знают.
Ну я, видимо, знаю, хотя на 1% не претендую. Но чет я пока с трудом замечаю сакральную важность этого знания.
Фокус заключается в том, что шаг рекурсии должен где-то существовать явно.
…
Другое дело, что люди часто путают рекурсию и отдельные шаги.
Что значит «шаг рекурсии должен существовать явно»? И почему должен? В каком контексте это условие необходимо? Я не придираюсь, а ничего не понимаю, если что.
Рекурсия на то и рекурсия что должна вызывать самая себя. Но в случае с чейнингом ты всегда можешь его свести к отдельным вызовам (…). И ты хочешь это проверить, а не не то о чём пишешь.
«Это» — это остановку рекурсии в моменте?
«О чём пишешь» — о чём? Я вижу, что пишется о возможности выразить понятия, которые ссылаются на себя, полагаясь в первую очередь на систему типов (тип T содержит упоминание типа T).
(Хотя я ещё не понял по какому принципу был сформирован второй лагерь C++-Java-Crystal.)
Исходная версия kaldeon, :
Любой боксинг стирает тип, что ломает типовую/железячную рекурсию.
Как понять стирает тип? Вот боксинг:
// тип является функцией, которая возвращает этот же тип
type fn func() fn
Вот железячная рекурсия:
// структура содержит сама себя
struct st {
struct st;
}
Очевидно, что структура не может содержать себя, ровно как и в почтовую упаковку не уместить идентичную упаковку, сохранив её идентичность.
Боксинг позволяет абстрагироваться от типов, полностью соответствующих железу. Но на камне не написано, что типы должны соответствовать материальным объектам. Типы в боксинге остаются типами и могут подразделяться на дин/стат.
А практически все «сишники» думают у функции тип void(*)(int), а что такое void(int) они знать не знают.
Ну я, видимо, знаю, хотя на 1% не претендую. Но чет я пока с трудом замечаю сакральную важность этого знания.
Фокус заключается в том, что шаг рекурсии должен где-то существовать явно.
…
Другое дело, что люди часто путают рекурсию и отдельные шаги.
Что значит «шаг рекурсии должен существовать явно»? И почему должен? В каком контексте это условие необходимо? Я не придираюсь, а ничего не понимаю, если что.
Рекурсия на то и рекурсия что должна вызывать самая себя. Но в случае с чейнингом ты всегда можешь его свести к отдельным вызовам (…). И ты хочешь это проверить, а не не то о чём пишешь.
«Это» — это остановку рекурсии в моменте?
«О чём пишешь» — о чём? Я вижу, что пишется о возможности выразить понятия, которые ссылаются на себя, полагаясь в первую очередь на систему типов (тип T содержит упоминание типа T).
(Хотя я ещё не понял по какому принципу был сформирован второй лагерь C++-Java-Crystal.)