Сообщение Re[69]: Haskell нужен! (в Standard Chartered Bank) от 27.02.2015 15:15
Изменено 27.02.2015 16:26 AlexRK
Здравствуйте, Sinclair, Вы писали:
S>В вашем коде зато нет compile-time запрета на вызов try_to_change_amount в невалидном контексте.
Есть.
S>Вы просто заменили одну небезопасную функцию на другую небезопасную функцию.
Нет.
S>Вот вам пример кода, который приводит к runtime fault в вашем коде:
S>Этот код прекрасно компилируется, и в 100% запусков показывает "осмысленная ошибка".
Этот код не скомпилируется. (Впрочем, зависит от реализации SetRisk, если мы там ошибочно забудем навесить на order предикат HasRisk, то действительно скомпилируется.)
S>Каких ещё очевидных вещей вы не понимаете?
Боюсь, это вы чего-то не понимаете.
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, то действительно скомпилируется.)
S>Каких ещё очевидных вещей вы не понимаете?
Боюсь, это вы чего-то не понимаете.
Re[69]: Haskell нужен! (в Standard Chartered Bank)
Здравствуйте, Sinclair, Вы писали:
S>В вашем коде зато нет compile-time запрета на вызов try_to_change_amount в невалидном контексте.
Есть.
S>Вы просто заменили одну небезопасную функцию на другую небезопасную функцию.
Нет.
S>Вот вам пример кода, который приводит к runtime fault в вашем коде:
S>Этот код прекрасно компилируется, и в 100% запусков показывает "осмысленная ошибка".
Этот код не скомпилируется. (Впрочем, зависит от реализации SetRisk, если мы там ошибочно забудем навесить на order предикат HasRisk, то действительно скомпилируется.)
Прошу прощения, здесь я наврал. Этот код действительно скомпилируется, ведь мы предусмотрели возможность передачи в try_to_change_amount невалидного ордера.
А вот если бы потребовали только валидный, как здесь — http://rsdn.ru/forum/philosophy/5967700?tree=tree
S>Каких ещё очевидных вещей вы не понимаете?
Боюсь, это вы чего-то не понимаете.
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% запусков показывает "осмысленная ошибка".
Прошу прощения, здесь я наврал. Этот код действительно скомпилируется, ведь мы предусмотрели возможность передачи в try_to_change_amount невалидного ордера.
А вот если бы потребовали только валидный, как здесь — http://rsdn.ru/forum/philosophy/5967700?tree=tree
Автор: AlexRK
Дата: 27.02.15
— то не скомпилируется.Дата: 27.02.15
S>Каких ещё очевидных вещей вы не понимаете?
Боюсь, это вы чего-то не понимаете.