Re[116]: Haskell нужен! (в Standard Chartered Bank)
От: Mamut Швеция http://dmitriid.com
Дата: 30.03.15 20:25
Оценка:
_>Ты уже определись, risk check, auth и т.п. — это отдельные операции над ордерами (т.е. меняют их) или же просто какие-то условия на выполнение операций increase/decrease?

Ты уже определись, прочитаешь ты условие задачи, или нет.

Это — отдельные операции над ордерами. Будут эти операции происходить или нет, зависит от различных предусловий. Будут ли происходить очередные операции, часто зависит от результата предыдущих операций.

Мне уже надоело одно и то же писать разными предложениями. Твой примитивный пример и настойчивость, что все в мире является лишь последовательностью операций являются лишь теоретическими изысканиями и фантазиями на тему.

M>>У тебя нет пояснений. У тебя есть какое-то упорное желание фантазировать на темы. «Ах-ах-ах, вот тебе пример, там есть три действия подряд с одним условием, это такая прекрасная демонстрация». Только это — фэнтезийный сферовакуумный теоретический пример. На практике между этими тремя действиями есть толпа условий. Каждое следующее действие вполне может зависеть от результата предыдущего действия. И как решается это, ни ты, ни кто либо другой так и не осилили показать. Несмотря на все высокопарные и пафосные заявления.


_>Ты действительно считаешь, что если в моём примере заменить

_>
_>X();
_>Y();
_>Z();
_>

_>на
_>
_>X();
_>Y();
_>if(complex_condition()) Z1();
_>else Z2();
_>

_>то это вообще что-то изменит? )


Я считаю, что ты неспособен решить мою задачу своим подходом именно из-за того, что:
— в ней есть условия
— ты не решаешь не мою задачу, а свои фантазии про мою задачу

Могу я увидеть решение хотя бы первого пункта моей задачи? В идеале — всех трех пунктов. Ведь как ты там пафосно заявлял? Твой подход подходит для любых задач?


dmitriid.comGitHubLinkedIn
Re[117]: Haskell нужен! (в Standard Chartered Bank)
От: alex_public  
Дата: 30.03.15 22:52
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ты уже определись, прочитаешь ты условие задачи, или нет.


M>Это — отдельные операции над ордерами. Будут эти операции происходить или нет, зависит от различных предусловий. Будут ли происходить очередные операции, часто зависит от результата предыдущих операций.


M>Мне уже надоело одно и то же писать разными предложениями. Твой примитивный пример и настойчивость, что все в мире является лишь последовательностью операций являются лишь теоретическими изысканиями и фантазиями на тему.


ОК, это отдельные операции над ордерами. Тогда уточни какое именно поле в ордере может поменять операция risk check. Я что-то не нашёл этого в твоём описание задачи.


M>Я считаю, что ты неспособен решить мою задачу своим подходом именно из-за того, что:

M>- в ней есть условия
M>- ты не решаешь не мою задачу, а свои фантазии про мою задачу

M>Могу я увидеть решение хотя бы первого пункта моей задачи? В идеале — всех трех пунктов. Ведь как ты там пафосно заявлял? Твой подход подходит для любых задач?


А чего там не хватает то до полной реализации первого пункта? ) Я уже забыл свой пример))) Кажется нет поля prepaid (потому как оно полностью аналогично по действию другому полю) и нет вызова risk_check (банально добавляется в if, т.к. является внешним вызовом). В остальном всё реализовано. Ты точно уверен, что мне очень сложно скопировать тот пример и добавить в него эти две строки? ))) Только вот непонятно ради чего это делать — только из-за твоей мании получить решение вот прямо твоей задачки?
Re[118]: Haskell нужен! (в Standard Chartered Bank)
От: Mamut Швеция http://dmitriid.com
Дата: 31.03.15 07:13
Оценка:
M>>Мне уже надоело одно и то же писать разными предложениями. Твой примитивный пример и настойчивость, что все в мире является лишь последовательностью операций являются лишь теоретическими изысканиями и фантазиями на тему.

_>ОК, это отдельные операции над ордерами. Тогда уточни какое именно поле в ордере может поменять операция risk check. Я что-то не нашёл этого в твоём описание задачи.


Зачем тебе это? Задача составлена именно так, что бы ты, со своими заявлениями про стат. типизацию, мог ее решить так, как тебе удобно.


M>>Я считаю, что ты неспособен решить мою задачу своим подходом именно из-за того, что:

M>>- в ней есть условия
M>>- ты не решаешь не мою задачу, а свои фантазии про мою задачу

M>>Могу я увидеть решение хотя бы первого пункта моей задачи? В идеале — всех трех пунктов. Ведь как ты там пафосно заявлял? Твой подход подходит для любых задач?


_>А чего там не хватает то до полной реализации первого пункта?


всего. там нет решения первого пункта.

_>) Я уже забыл свой пример))) Кажется нет поля prepaid (потому как оно полностью аналогично по действию другому полю) и нет вызова risk_check (банально добавляется в if, т.к. является внешним вызовом). В остальном всё реализовано. Ты точно уверен, что мне очень сложно скопировать тот пример и добавить в него эти две строки? )))


Да, я уверен. Иначе ты (и другие) сделали бы это еще два месяца тому назад.


dmitriid.comGitHubLinkedIn
Re[119]: Haskell нужен! (в Standard Chartered Bank)
От: alex_public  
Дата: 31.03.15 16:44
Оценка:
Здравствуйте, Mamut, Вы писали:

_>>ОК, это отдельные операции над ордерами. Тогда уточни какое именно поле в ордере может поменять операция risk check. Я что-то не нашёл этого в твоём описание задачи.

M>Зачем тебе это? Задача составлена именно так, что бы ты, со своими заявлениями про стат. типизацию, мог ее решить так, как тебе удобно.

Что значит зачем мне это? Если risk check — это операция над ордером, то она вызывается одним способом. А если risk check — это всего лишь условие (не может ничего поменять в ордере), то совсем по другому и в другом месте. Ты уж определись.

_>>А чего там не хватает то до полной реализации первого пункта?

M>всего. там нет решения первого пункта.

Ну ну) На мой взгляд тут даже начинающий программист смог бы увидеть, что в предложенном примере продемонстрированы все необходимые концепции для реализации твоей задачки. ) Ну если ты не можешь, то...

M>Да, я уверен. Иначе ты (и другие) сделали бы это еще два месяца тому назад.


Ох, ты млин))) Ну что я могу сказать тут... Разве что "да на вот, подавись" ))))

#include <stdexcept>
#include <iostream>
using namespace std;

//Реализация пункта 1
enum class OrderType {Unknown, OnlyDecrease, Constant};
template<OrderType Type>
struct Order{
    const int amount;
    const bool sent;
    const bool risk;
    const bool prepaid;
};

template<OrderType Type> bool RiskCheck(const Order<Type>& o) {return true;//реализация для примера}
template<OrderType Type> auto RiskOrder(const Order<Type>& o) {return Order<OrderType::Constant>{o.amount, o.sent, true, o.prepaid};}
template<OrderType Type> auto PayOrder(const Order<Type>& o) {return Order<OrderType::Constant>{o.amount, o.sent, o.risk, true};}
template<OrderType Type> auto SendOrder(const Order<Type>& o) {return Order<Type==OrderType::Unknown?OrderType::OnlyDecrease:Type>{o.amount, true, o.risk, o.prepaid};}
template<OrderType Type> auto Increase(const Order<Type>& o, int v)
{
    static_assert(Type==OrderType::Unknown, "You can not increase this order");
    if(o.sent||o.risk||o.prepaid||!RiskCheck(o)) throw invalid_argument("You can not increase this order");
    else return Order<Type>{o.amount+v, o.sent, o.risk, o.prepaid};
}
template<OrderType Type> auto Decrease(const Order<Type>& o, int v)
{
    static_assert(Type!=OrderType::Constant, "You can not decrease this order");
    if(Type==OrderType::Unknown&&(o.risk||o.prepaid)) throw invalid_argument("You can not decrease this order");
    else return Order<Type>{o.amount-v, o.sent, o.risk, o.prepaid};
}

//Проверка тестами
template<OrderType Type, typename F> void ProcessOrder(const Order<Type>& o, F f)
{
    cout<<"Process order:\t"<<o.amount<<'\t'<<o.sent<<'\t'<<o.risk<<'\t'<<o.prepaid<<endl;
    try{
        auto r=f(o);
        cout<<"Result order:\t"<<r.amount<<'\t'<<r.sent<<'\t'<<r.risk<<'\t'<<o.prepaid<<endl;
    }catch(const exception& e) {cout<<e.what()<<endl;}
}

int main()
{
    ProcessOrder(Order<OrderType::Unknown>{100, false, false, false}, [](auto o){//нормально отрабатывает
        auto o1=Increase(o, 10);
        auto o2=SendOrder(o1);
        return Decrease(o2, 20);
    });
    ProcessOrder(Order<OrderType::Unknown>{100, true, false, false}, [](auto o){//вылетает с исключением в рантайме - плохой входящий ордер для такого алгоритма
        auto o1=Increase(o, 10);
        auto o2=SendOrder(o1);
        return Decrease(o2, 20);
    });
    ProcessOrder(Order<OrderType::Unknown>{100, false, false, false}, [](auto o){//некомпилируется - компилятор видит ошибку в бизнес логике алгоритма
        auto o1=Decrease(o, 20);
        auto o2=SendOrder(o1);
        return Increase(o2, 10);
    });
}


Реально пришлось добавить пару элементарных строк в пример, чтобы добить его до полной реализации пункта 1 задачки...
Re[120]: Haskell нужен! (в Standard Chartered Bank)
От: Mamut Швеция http://dmitriid.com
Дата: 01.04.15 05:37
Оценка:
_>Что значит зачем мне это? Если risk check — это операция над ордером, то она вызывается одним способом. А если risk check — это всего лишь условие (не может ничего поменять в ордере), то совсем по другому и в другом месте. Ты уж определись.

1. У тебя же хваленая стат. типизация, в которой ты можешь создавать любые типы и т.п. Зачем тебе знать, изменяется заказ или нет? Вообще-то, условий в задаче вполне достаточно, чтобы решить ее. Я все больше убеждаюсь, что ты не имеешь ни малейшего представления, как ее решить, и хочешь, чтобы я ее решил за тебя
2. Бинарная логика во все поля. Или действие, или условие. Или меняем, или не меняем. После этого люди еще обижаются, когда я их сугубыми теоретиками называю. Потому что в реальном мире, отражением которого является моя задача, такого бинарного разделения не существует. И ты бы это увидел, если бы задался целью прочитать и понять задачу. Могу только процитировать сам себя:

Это — отдельные операции над ордерами. Будут эти операции происходить или нет, зависит от различных предусловий. Будут ли происходить очередные операции, часто зависит от результата предыдущих операций.


_>>>А чего там не хватает то до полной реализации первого пункта?

M>>всего. там нет решения первого пункта.

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


Концепции — это сугубая теория. Которая пока разбивается о практику.

M>>Да, я уверен. Иначе ты (и другие) сделали бы это еще два месяца тому назад.

_>Ох, ты млин))) Ну что я могу сказать тут... Разве что "да на вот, подавись" ))))

  Скрытый текст
_>
_>#include <stdexcept>
_>#include <iostream>
_>using namespace std;

_>//Реализация пункта 1
_>enum class OrderType {Unknown, OnlyDecrease, Constant};
_>template<OrderType Type>
_>struct Order{
_>    const int amount;
_>    const bool sent;
_>    const bool risk;
_>    const bool prepaid;
_>};

_>template<OrderType Type> bool RiskCheck(const Order<Type>& o) {return true;//реализация для примера}
_>template<OrderType Type> auto RiskOrder(const Order<Type>& o) {return Order<OrderType::Constant>{o.amount, o.sent, true, o.prepaid};}
_>template<OrderType Type> auto PayOrder(const Order<Type>& o) {return Order<OrderType::Constant>{o.amount, o.sent, o.risk, true};}
_>template<OrderType Type> auto SendOrder(const Order<Type>& o) {return Order<Type==OrderType::Unknown?OrderType::OnlyDecrease:Type>{o.amount, true, o.risk, o.prepaid};}
_>template<OrderType Type> auto Increase(const Order<Type>& o, int v)
_>{
_>    static_assert(Type==OrderType::Unknown, "You can not increase this order");
_>    if(o.sent||o.risk||o.prepaid||!RiskCheck(o)) throw invalid_argument("You can not increase this order");
_>    else return Order<Type>{o.amount+v, o.sent, o.risk, o.prepaid};
_>}
_>template<OrderType Type> auto Decrease(const Order<Type>& o, int v)
_>{
_>    static_assert(Type!=OrderType::Constant, "You can not decrease this order");
_>    if(Type==OrderType::Unknown&&(o.risk||o.prepaid)) throw invalid_argument("You can not decrease this order");
_>    else return Order<Type>{o.amount-v, o.sent, o.risk, o.prepaid};
_>}

_>//Проверка тестами
_>template<OrderType Type, typename F> void ProcessOrder(const Order<Type>& o, F f)
_>{
_>    cout<<"Process order:\t"<<o.amount<<'\t'<<o.sent<<'\t'<<o.risk<<'\t'<<o.prepaid<<endl;
_>    try{
_>        auto r=f(o);
_>        cout<<"Result order:\t"<<r.amount<<'\t'<<r.sent<<'\t'<<r.risk<<'\t'<<o.prepaid<<endl;
_>    }catch(const exception& e) {cout<<e.what()<<endl;}
_>}

_>int main()
_>{
_>    ProcessOrder(Order<OrderType::Unknown>{100, false, false, false}, [](auto o){//нормально отрабатывает
_>        auto o1=Increase(o, 10);
_>        auto o2=SendOrder(o1);
_>        return Decrease(o2, 20);
_>    });
_>    ProcessOrder(Order<OrderType::Unknown>{100, true, false, false}, [](auto o){//вылетает с исключением в рантайме - плохой входящий ордер для такого алгоритма
_>        auto o1=Increase(o, 10);
_>        auto o2=SendOrder(o1);
_>        return Decrease(o2, 20);
_>    });
_>    ProcessOrder(Order<OrderType::Unknown>{100, false, false, false}, [](auto o){//некомпилируется - компилятор видит ошибку в бизнес логике алгоритма
_>        auto o1=Decrease(o, 20);
_>        auto o2=SendOrder(o1);
_>        return Increase(o2, 10);
_>    });
_>}


_>Реально пришлось добавить пару элементарных строк в пример, чтобы добить его до полной реализации пункта 1 задачки...


И ты опять реально не осилил даже прочитать условие задачи. Нет, твоя задача не решает первый пункт. Вот интересно, поймешь ли ты это.

Ну и да. Я правильно понимаю, что RiskCheck происходит все равно в рантайме?


dmitriid.comGitHubLinkedIn
Re[121]: Haskell нужен! (в Standard Chartered Bank)
От: alex_public  
Дата: 01.04.15 15:35
Оценка:
Здравствуйте, Mamut, Вы писали:

_>>Что значит зачем мне это? Если risk check — это операция над ордером, то она вызывается одним способом. А если risk check — это всего лишь условие (не может ничего поменять в ордере), то совсем по другому и в другом месте. Ты уж определись.

M>1. У тебя же хваленая стат. типизация, в которой ты можешь создавать любые типы и т.п. Зачем тебе знать, изменяется заказ или нет? Вообще-то, условий в задаче вполне достаточно, чтобы решить ее. Я все больше убеждаюсь, что ты не имеешь ни малейшего представления, как ее решить, и хочешь, чтобы я ее решил за тебя

Бредим? ) И даже не читаем то, на что отвечаем? )

M>2. Бинарная логика во все поля. Или действие, или условие. Или меняем, или не меняем. После этого люди еще обижаются, когда я их сугубыми теоретиками называю. Потому что в реальном мире, отражением которого является моя задача, такого бинарного разделения не существует. И ты бы это увидел, если бы задался целью прочитать и понять задачу.


Угу, понятно, в твоём очаровательном мире все вокруг ходят слегка беременные. )

M>Могу только процитировать сам себя:

M>Это — отдельные операции над ордерами. Будут эти операции происходить или нет, зависит от различных предусловий. Будут ли происходить очередные операции, часто зависит от результата предыдущих операций.


Да причём тут условия, при которых выполняется данная функция. Это ни на что не влияет. Я тебе спрашиваю, меняет эта функция при своём исполнение ордер или нет. И ты почему-то не в силах ответить на такой простейший вопрос уже который раз.

_>>Реально пришлось добавить пару элементарных строк в пример, чтобы добить его до полной реализации пункта 1 задачки...

M>И ты опять реально не осилил даже прочитать условие задачи. Нет, твоя задача не решает первый пункт. Вот интересно, поймешь ли ты это.

Ну давай, расскажи, что ты ещё пытаешься изобрести, чтобы не признавать очевидного... )

M>Ну и да. Я правильно понимаю, что RiskCheck происходит все равно в рантайме?


Где тебе надо будет, там и будет, в зависимости от реального кода. У меня в примере там вообще константа возвращается, и понятно , что компилятор делает с таким кодом. )))
Re[122]: Haskell нужен! (в Standard Chartered Bank)
От: Mamut Швеция http://dmitriid.com
Дата: 05.04.15 18:58
Оценка:
M>>1. У тебя же хваленая стат. типизация, в которой ты можешь создавать любые типы и т.п. Зачем тебе знать, изменяется заказ или нет? Вообще-то, условий в задаче вполне достаточно, чтобы решить ее. Я все больше убеждаюсь, что ты не имеешь ни малейшего представления, как ее решить, и хочешь, чтобы я ее решил за тебя

_>Бредим? ) И даже не читаем то, на что отвечаем? )


Читаем. После хваленого «мой подход подходит везде» ты пытаешься решить не поставленную задачу, а сугубо игрушечную задачу, котору ты можешь решить. Тебя вообще не должно волновать, изменяется заказ или нет


M>>2. Бинарная логика во все поля. Или действие, или условие. Или меняем, или не меняем. После этого люди еще обижаются, когда я их сугубыми теоретиками называю. Потому что в реальном мире, отражением которого является моя задача, такого бинарного разделения не существует. И ты бы это увидел, если бы задался целью прочитать и понять задачу.


_>Угу, понятно, в твоём очаровательном мире все вокруг ходят слегка беременные. )



Нет. В моем реальном мире происходит то, что я описал. И задача была приведена из реального мира. Прекрасно, что за два месяца сугубые теоретики типа тебя не осилили даже первый пункт из нее.

M>>Могу только процитировать сам себя:

M>>Это — отдельные операции над ордерами. Будут эти операции происходить или нет, зависит от различных предусловий. Будут ли происходить очередные операции, часто зависит от результата предыдущих операций.


_>Да причём тут условия, при которых выполняется данная функция. Это ни на что не влияет.


если ни на что не влияет, где решение?

_>Я тебе спрашиваю, меняет эта функция при своём исполнение ордер или нет. И ты почему-то не в силах ответить на такой простейший вопрос уже который раз.


Ты не можешь ответить на простейишй вопрос: зачем тебе это знать?

Более того, все действия, что там описаны, могут менять заказ, а могут не менять

_>>>Реально пришлось добавить пару элементарных строк в пример, чтобы добить его до полной реализации пункта 1 задачки...

M>>И ты опять реально не осилил даже прочитать условие задачи. Нет, твоя задача не решает первый пункт. Вот интересно, поймешь ли ты это.
_>Ну давай, расскажи, что ты ещё пытаешься изобрести, чтобы не признавать очевидного... )

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

M>>Ну и да. Я правильно понимаю, что RiskCheck происходит все равно в рантайме?

_>Где тебе надо будет, там и будет, в зависимости от реального кода.

Ага. Демагогия.

_>У меня в примере там вообще константа возвращается, и понятно , что компилятор делает с таким кодом. )))


Ага. Ты себе придумал тот пример, который ты смог решить, и пытаешься выдать его за решение моей задачи. Мою задачу он не решает.


dmitriid.comGitHubLinkedIn
Re[123]: Haskell нужен! (в Standard Chartered Bank)
От: alex_public  
Дата: 06.04.15 00:44
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Читаем. После хваленого «мой подход подходит везде» ты пытаешься решить не поставленную задачу, а сугубо игрушечную задачу, котору ты можешь решить. Тебя вообще не должно волновать, изменяется заказ или нет


Почему это не должно меня волновать? И твоя задача (в рамках пункта1) вполне себе решена.

_>>Я тебе спрашиваю, меняет эта функция при своём исполнение ордер или нет. И ты почему-то не в силах ответить на такой простейший вопрос уже который раз.

M>Ты не можешь ответить на простейишй вопрос: зачем тебе это знать?

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

M>Более того, все действия, что там описаны, могут менять заказ, а могут не менять


Т.е. ты хочешь сказать что могут? Тогда почему в условие задачи у тебя написано " если сумма увеличивается, мы должны провести risk check. если risk check не проходит, товар никак не помечается, но изменение суммы не проходит"? Судя по этой цитате risk_check является классическим условием для операции увеличения суммы. Т.е. изначально в задаче у тебя всё нормально сформулировано. А вот потом (когда тебе уже показали несколько разных решений), в обсуждение, ты начал придумывать что risk_check — это независимая операция над ордером и т.п. Так ты всё же определись как оно. Если как в начальном описание задачи, то решения тебе показали. Если же твоё начальное описание неверно и risk_check является операцией, то тогда решения надо чуть переделать.

M>Очевидное ровно одно: твоя задача не выполняет даже первого пункта задачи. Просто пройдись по каждому пункту в первом шаге и скажи сам себе, выполняет ли его твое «решение». Ах да, я забыл, ты не сможешь на это ответить, потому что тебе с какого-то перепугу надо знать, меняют действия заказ или не меняют


Да, надо знать. ) Но данное решение написано в предположение что не меняет (как и указано у тебя описание задачи). И мне можно не проходить по пунктам задачи, потому как я предоставил компилируемый пример, который проходит нужные тесты. А от тебя пока видна только пустая болтовня.
Re[124]: Haskell нужен! (в Standard Chartered Bank)
От: Mamut Швеция http://dmitriid.com
Дата: 07.04.15 16:40
Оценка:
_>Почему это не должно меня волновать? И твоя задача (в рамках пункта1) вполне себе решена.

В общем, можно этот бессмысленный спор можно прекращать. Если ты не осилил даже понять и решить даже первый пункт моей задачи, то о чем идет речь? Только о твоей демагогии и пафосных «мой подход работает везде».

Ну да. Неумение за два месяца решить простейшую задачу действительно работает везде


dmitriid.comGitHubLinkedIn
Re[125]: Haskell нужен! (в Standard Chartered Bank)
От: alex_public  
Дата: 07.04.15 23:57
Оценка:
Здравствуйте, Mamut, Вы писали:

M>В общем, можно этот бессмысленный спор можно прекращать. Если ты не осилил даже понять и решить даже первый пункт моей задачи, то о чем идет речь? Только о твоей демагогии и пафосных «мой подход работает везде».


M>Ну да. Неумение за два месяца решить простейшую задачу действительно работает везде


Слив засчитан.
Re[126]: Haskell нужен! (в Standard Chartered Bank)
От: Mamut Швеция http://dmitriid.com
Дата: 08.04.15 11:24
Оценка:
M>>В общем, можно этот бессмысленный спор можно прекращать. Если ты не осилил даже понять и решить даже первый пункт моей задачи, то о чем идет речь? Только о твоей демагогии и пафосных «мой подход работает везде».

M>>Ну да. Неумение за два месяца решить простейшую задачу действительно работает везде


_>Слив засчитан.


Твой (и не только твой)? Безусловно. Длинный двухмесячный слив. Если не учитывать споры про Оберон, это — по-моему, рекорд по длительности.


dmitriid.comGitHubLinkedIn
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.