Re[69]: Haskell нужен! (в Standard Chartered Bank)
От: AlexRK  
Дата: 27.02.15 15:15
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>В вашем коде зато нет compile-time запрета на вызов try_to_change_amount в невалидном контексте.


Есть.

S>Вы просто заменили одну небезопасную функцию на другую небезопасную функцию.


Нет.

S>Вот вам пример кода, который приводит к runtime fault в вашем коде:

...
   Order o = create_order();
   o.SetRisk(10000);
   try_to_change_amount(o); 
...

S>Этот код прекрасно компилируется, и в 100% запусков показывает "осмысленная ошибка".

Этот код не скомпилируется. (Впрочем, зависит от реализации SetRisk, если мы там ошибочно забудем навесить на order предикат HasRisk, то действительно скомпилируется.)

Прошу прощения, здесь я наврал. Этот код действительно скомпилируется, ведь мы предусмотрели возможность передачи в try_to_change_amount невалидного ордера.
А вот если бы потребовали только валидный, как здесь — http://rsdn.ru/forum/philosophy/5967700?tree=tree
Автор: AlexRK
Дата: 27.02.15
— то не скомпилируется.

S>Каких ещё очевидных вещей вы не понимаете?


Боюсь, это вы чего-то не понимаете.
Отредактировано 27.02.2015 16:26 AlexRK . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.