Re[72]: Haskell нужен! (в Standard Chartered Bank)
От: jazzer Россия Skype: enerjazzer
Дата: 03.03.15 16:36
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Mamut, Вы писали:


M>>Нууу... Сложно сказать. Из того, что я пока видел из предложенного в двух ветках, там на каждое условие придется писать свой тип/параметр типа, которые в некоторых местах вообще непонятно, как будут выглядеть (см. последнюю строчку).

S>Последняя строчка выглядит так, что она как раз останется частью рантайм-функциональности. Т.е. задача не сводится к тому, чтобы математически доказать, что подобных условий в принципе возникнуть не может. Они могут возникнуть, и штатной функциональностью будет отказ от выполнения операции с возвратом рантайм-ошибки.
S>А в остальном — да, на каждое статически проверяемое условие будет свой параметр типа.

бинго

S>Это как бы не такая уж проблема в смысле объёма требований. Это в С++ или С# реализация может оказаться крайне громоздкой, а некоторые вещи вообще не взлетят (ну там, где параметр типа не Boolean, а что-то поинтереснее).

Все, что может быть выражено цепочкой if/else — будет работать. Каким бы сложным ни было свойство — ты всегда можешь сделать функцию по его проверке, которая будет возвращать bool — прошла проверка или нет. Свойство не обязано быть булевским само по себе. Скажем, цена заказа — это не булевское свойство. А вот превышает ли она литим, гарантирующий бесплатную доставку — это да/нет.
Или, в моем же примере, есть свойство "можно ли для этого ордера (в его нынешнем состоянии) поднять цену на данную величину". Это уже свойство, объединяющее несколько сущностей и выражающее отношения между ними.

Булевское свойство просто делается проще всего, поэтому я его реализовал напрямую в своем примере. Это не значит, что только булевские свойства возможны.

S>Мне нравится сама тема разговора — попытка скрестить "матан" передовиков типизации с "сермягой" прикладных направлений.

S>И коммуникационные проблемы тут вполне ожидаемы — теоретики не очень внятно представляют себе, что такое обработка заказа, а практики не очень понимают, чего вообще ожидать от типизации в частности и статической верификации контрактов вообще.

Вот я — практик до не знаю мозга каких костей, я вообще не программер по образованию И по банкам работаю уже лет 15, так что про ордера (биржевые, правда) я знаю все
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.