Active Entries
- 1: Трамп нас опять спас
- 2: Huiterangi
- 3: срач
- 4: Spruce Goose
- 5: старый комбайн
- 6: дизайн
- 7: мытье
- 8: о дивный новый мир
- 9: Синдром национальной ущербности
- 10: 19-й век
Style Credit
- Style: Neutral Good for Practicality by
Expand Cut Tags
No cut tags
no subject
Date: 2016-03-09 10:44 am (UTC)Из БД может быть прочитано value|none|error. Функция умеет делать сложную математику, но мы хотим, чтобы она возвращала что-то осмысленное даже если там error или none. Мы можем написать пачку if'ов, чтобы на всех уровнях стека каждый раз писать if status==error ... if value == none..., а можем завернуть разумные функции (которые работают только с данными) в монадки, которые добавят адекватную обработку error/none случаев, и если мы в финале (на верхнем уровне) не обработаем все варианты (допустим, в стеке в какой-то момент у нас получилось уже error|invalid|outdatated|none|value), то программа просто не скомпилируется.
А вот сишный код, который if'ами утыкан, просто молча "сделает не то", обнаружив на месте value invalid|outdated, о котором в одном месте программы подумали, а во втором забыли.