Pull to refresh
96
1.1
Майоров Павел @mayorovp

Senior Backend тыжDeveloper

Send message

Не совсем, говоря о типе переменных мы говорим о множестве допустимых значений и о наборе допустимых операций. Про вторую часть забывать не следует, тогда и не будет противоречий с номинативной типизацией и академическими работами.

Начнём с того, что нет предиката принадлежности объекта типу. Когда мы пишем x : T […]

Уточню. Вот тут не надо путать терм (тот самый x) и его значение. Для значений нет проблем построить предикат принадлежности.

В HoTT множеством называется тип, у которого любые два экземпляра равны не более чем одним способом.

Ага, только вот во всех языках программирования, включая Agda и Idris, любой тип является множеством (есть попытки убрать аксиому K из языков, но они все за флагами). Так что, даже с точки зрения HoTT, занимаясь практическим программированием считать типы множествами не так уж и глупо.

Как вы вообще представляете себе внезапную смену теплоснабжающей организации?

.NET 4.* - это legacy в принципе:

  • принципиальное отсутствие поддержки .NET Standard 2.1;

  • принципиальная несовместимость с некоторыми свежими фичами языка C#;

  • устаревшая система сборки в комплекте;

  • ужасные конфигурационные файлы, в которых смешиваются настройки платформы и настройки приложения;

  • устаревшая архитектура системных классов (особенно в System.Web).

Многие вещи ощущались как неизбежное зло в 2016м году, но начиная с выхода .NET Core 2.0 вся старая ветка .NET перешла в категорию "всё ещё приходится использовать, но уже хочется свалить". А это и есть legacy.

Соответственно, все версии 4.7.1, 4.7.2, 4.8 и 4.8.1 были legacy ещё в момент релиза.

Лучше сделать прививку, чем прижигать.

Мосты не то определять научились, не то просто публично доступные по списку перебанили.

Ну так именно про это и пример, про дружественность к своим.

"Тоже" - это если бы его и там пытались удалить из основателей, но этого не происходит. Обычный вандализм там.

и они объект селекции, направленно проводимой человеком. И, достаточно длительный срок.

Так занимаются же. Те которые и правда животных любят, а не просто людей ненавидят.

Он тут как пример подхода. Старый пример, потому и старая версия.

Комментарий был написан не в вакууме, а в ответ на статью.

Иногда строгая типизация как раз нужна, чтобы избежать лишних ошибок. Этак можно с шаблонами написать T вместо типа и передавать туда всё, что угодно (скомпилируется ли это - другой вопрос).

Только вот std::span - вполне себе строгий тип, это никак не какой-то там T. Каких таких ошибок вы пытаетесь избежать принимая вместо него vector?

Требование минимального достаточного контракта от входных данных всегда было хорошей практикой программирования, и оно никак не противоречит строгой типизации.

Разумеется, как только стек (или очередь) toVisit исчерпается. В показанном фрагменте кода этого не видно, но лично мне очевидно что первая же строчка внутри тела цикла забирает из toVisit очередной элемент.

Подмену тезиса я вижу как раз у вас. Типы String, Vec и им подобные перемещаются? Перемещаются.
Почему вы вообще ожидаете перемещение типа, не содержащего ни одной ссылки - не понимаю.

Вы так пишете, как будто в каком-нибудь С++ аналогичный код сделает меньше копирований памяти:

struct S
{
    int i;
}

void foo(S s)
{
    std::cout << &s << std::endl;
}

fn main()
{
    S s = ...;
    std::cout << &s << std::endl;
    
    foo(std::move(s));
}

Оно там исследуется конечно же, только не рекурсивно, а итеративно. Обратите внимание на внешний цикл.

Так вот почему некоторые купленные утюги нихрена не грели...

А выставленная на кондиционере температура вообще хоть на что-то влияет?

Спор-то идёт исключительно терминологический, а термины всегда привязаны к языку. Не вижу смысла вообще смотреть в какие-то там "оригиналы".

Information

Rating
1,421-st
Location
Челябинск, Челябинская обл., Россия
Date of birth
Registered
Activity