LINUX.ORG.RU

История изменений

Исправление 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.)