Date: 2016-03-07 08:37 pm (UTC)
Строгая типизация существует уже давно, как и алгольно-паскльное различение процедур и функций, с обязательным требованием что-то сделать со значением, возвращаемым функцией.

> Ярким примером является энкапсуляция ошибок и обязательности возможности наличия данных - монадки Must и Maybe. Типы данных требуют для Maybe, чтобы все обработчики этих данных умели обработать случай None (т.е. реальных данных нет), а Must - не даст сделать код, который "иногда, очень-очень редко" вернёт None вместо файлового дескриптора.
> Ещё интереснее обработка ошибок. Если мы описываем монадку, которая состоит из Data|None|Error, то если мы в каком-то месте забудем сказать, что делать если там ошибка (например, на пятом уровне по стеку вверх), то программа не скомпилируется.

Это все происходит от специфической убогости их языка. У них нету даже циклов, не говоря уже про break/continue. Вместо того все вытягивается в конвейеры, в которых последующим стадиям приходится уметь обратабывать все, что производится предудыщими стадиями.

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

> Принудительное разделение на "чистый" код и код в монадке IO позволяет легко рефакторить этот самый чистый код, потому что его элементарно покрыть тестами и там нет ничего, чтобы могло "сломать что-то другое".

Это очень-очень неправильная идея, из очень многих соображений. Начать можно с простого соображения: фокус в том, что "чистый код" ничего не делает и никому не нужен. А если его пытаться сделать нужным, то он у них делается просто жутким. После этого можно на остальны соображения даже не смотреть.

> Ах, да, ещё pattern matching - это когда у компилятора достаточно информации о типах, чтобы сказать, что мы "забыли" какой-то из case'ов в switch'е (если на сишном языке говорить).

Нынешние сишные компиляторы умеют выдавать такие предупреждения.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

July 2025

S M T W T F S
  1 2345
678 9101112
131415 1617 1819
202122 23 24 2526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 26th, 2025 10:33 pm
Powered by Dreamwidth Studios