Pull to refresh
44
0.1

Типострадалец

Send message

Так Агду тайпчекают, а не запускают с JIT-компилятором.

Я читал что возможно идёт обмен виртуальными фотонами, но увы, проверить экспериментально невозможно.

Почему невозможно? Эффект Казимира вполне подтверждён экспериментально.

  1. nil — это то, что мне практически никогда не нужно (особенно с учётом того, что добавление в nil-мапу паникует). И да, я не хочу читать документацию для того, чтобы понять, является ли в данном конкретном случае значение nil валидным.
  2. В специфических случаях этот линтер не помогает. Ну и всё-таки есть разница между кодом, на который ругается линтер, и кодом, который попросту не компилируется.
Да, нет generic-ов, но можно добавить структуру вручную:

return &EventResult{} // good luck handling it
это зависит от взвешивающего. мне в корзине нужно среднее образование без пропаганды насилия, милитаризма и этатизма. знаете где его купить в этой стране?

Хм. Путь зерна подходит? (Disclaimer: лично ни разу там не был)

И не понял пока преимущества Result<res, err> над гошным res, err… ну кроме сахара в виде foo()?

Преимущество как раз понятное: при помощи Result<T, E> можно вернуть или ответ, или ошибку, поэтому воспользоваться ответом, проигнорировав ошибку, в принципе невозможно. Ну и, в отличие от Go, не возникает вопроса, что делать, если функция вернула nil, nil.

У меня пара вопросов к вашему коду:
1. Почему вы везде в коде пишете


for index in range(len(array)):
    array_item = array[index]
    ...

вместо более простого, понятного и производительного


for array_item in array:
    ...

?
2. Почему вы используете для параметров отдельных тел список вместо класса с именованными полями?

Если на заборе написано «слово», а за ним дрова, то вывод очевиден.

Ну да, сарай ill-typed.

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

Чтобы написать тест (или сгенерировать автоматом как в QuickCheck, не важно) вам нужно знать какое-то св-во, которому должна удовлетворять ваша ф-я. Но если вы это св-во для тестов задали — значит, вы его не забыли. Значит, вы его учли в коде. Если же вы его забыли — то тест этой ошибки не поймает, т.к. не будет знать, что ему ловить.

В таких случаях может помочь QuickSpec

Уважаемый gBear, хочу напомнить, что статически типизированные ЯП не сводятся к C++, Java и C#.

1. Его сочетания мнемоничны и их даже не надо запоминать, они интуитивно понятны.

Я бы не сказал, что копирование на y (потому что (y)ank) — достаточно интуитивно.

3. Запомнить 10500 комбинация типа Shift+alt+T в современной среде разработки нереально. Потому что есть стандартные комбинации типа Ctrl+O, Ctrl+P, Ctrl+X/Z/C, а остальное назначается (упихивается) по принципу как получится.

Ну...

кстати ещё хороший паттерн для goto — обработчик со стейтмашиной. Переходы между стейтами красиво оформляются как раз goto.

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

На этапе исполнения достаточно проверять только на границах с неподконтрольной нетипизированной) средой.

Тут возникает вопрос, насколько подробно нужно эти аннотации проверять: поверхностные проверки могут привести к неожиданному/нежелательному поведению, а полные проверки типов в рантайме могут на порядок-два замедлить исполнение программ.

а далее — ещё надо прогарантировать порядок вызова деструкторов. что само по себе тоже не тривиальная задача

А что там нетривиального? При выходе из функции деструкторы будут вызваны в порядке, противоположном тому, в котором объекты создавались. Ничего специально для этого делать не надо, только код в деструкторе прописать ровно один раз на всё приложение.

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

"Пренебрежимо мало" в контексте Python надо читать, как "также дорого, как и всё остальное в Python".

Можно переписать на языке с RAII (да хоть том же C++) и будет ещё проще.

И unexpected type exception не получал (более того, даже не знаю, что это такое).

Это когда запускаешь код с -fdefer-type-errors

.map(|meta| EndpointAttrs::from_nested_meta(&&meta))

А тут точно двойной референс нужен?

Information

Rating
3,960-th
Registered
Activity