Сообщение Re[37]: Портирование нитры. от 16.02.2017 3:14
Изменено 16.02.2017 3:16 VladD2
Re[37]: Портирование нитры.
Здравствуйте, alex_public, Вы писали:
_>Это был тестовый пример. А в реальности это выглядело бы скорее всего как-то так:
_>
_>и было бы весьма распространённым случаем (причём в роли T тут могли бы быть как double, так и какой-нибудь boost::multiprecision::number< boost::multiprecision::mpfr_float_backend<100>>).
А я бы в таком случае сделал бы пару перегрузок и вообще без лямбд обошелся бы (все токи в немерле они не бесплатные):
Так что это не аргумент. А лямбду ты тоже вряд ли стал бы переиспользовать.
_>1. Где пример реализуется с такой же лаконичностью. Для обсуждаемого примера к этой группе будет относиться Хаскель и т.п.
_>2. Где пример реализуется, но чуть более громоздко. Для обсуждаемого примера к этой группе будет относиться C++, Scala, D и т.п.
_>3. Где пример вообще не реализуется. Для обсуждаемого примера в данную группу попадает и C# и Nemerle.
Я вот уверен, что если мы возьмем реальный (осмысленный и не тривиальный), а не надуманный, пример. То в итоге в лучшем случае твоя Питоновская реализация будет не меньшего размера, а напишешь рабочую версию ты за большее время.
А надуманные синтетические примеры — это ни о чем. Я тебе могу тоже привести пример со сложным паттернматчингом, который ты на С++ и Питоне задобаешся выписывать, а на Хаскеле, Немерле и Скале он будет тривиален.
А есть еще такие дадачки как запустить Word и прочесть данные из файла. Тут на плюсах придется встать раком (на создавать ком-серверов), а в Питоне и вообще не ясно что делать. Хаскель со Скалой видимо тоже будут в пролете. А на Немерле без проблем.
_>Это был тестовый пример. А в реальности это выглядело бы скорее всего как-то так:
_>
_>template<typename T> auto mycalc(const vector<T>& v){
_> return accumulate(v.cbegin(), v.cend(), T{0}, [](auto& s, auto& x) {
_> return (s+x)/2;//и тут явно не такая формула
_> });
_>};
_>
_>и было бы весьма распространённым случаем (причём в роли T тут могли бы быть как double, так и какой-нибудь boost::multiprecision::number< boost::multiprecision::mpfr_float_backend<100>>).
А я бы в таком случае сделал бы пару перегрузок и вообще без лямбд обошелся бы (все токи в немерле они не бесплатные):
mycalc(seq : Seq[int]) : int
{
mutable sum = 0;
foreach (x in v)
sum = (sum + x) / 2;
sum
}
mycalc(seq : Seq[double]) : double
{
mutable sum = 0.0;
foreach (x in v)
sum = (sum + x) / 2;
sum
}
Так что это не аргумент. А лямбду ты тоже вряд ли стал бы переиспользовать.
_>1. Где пример реализуется с такой же лаконичностью. Для обсуждаемого примера к этой группе будет относиться Хаскель и т.п.
_>2. Где пример реализуется, но чуть более громоздко. Для обсуждаемого примера к этой группе будет относиться C++, Scala, D и т.п.
_>3. Где пример вообще не реализуется. Для обсуждаемого примера в данную группу попадает и C# и Nemerle.
Я вот уверен, что если мы возьмем реальный (осмысленный и не тривиальный), а не надуманный, пример. То в итоге в лучшем случае твоя Питоновская реализация будет не меньшего размера, а напишешь рабочую версию ты за большее время.
А надуманные синтетические примеры — это ни о чем. Я тебе могу тоже привести пример со сложным паттернматчингом, который ты на С++ и Питоне задобаешся выписывать, а на Хаскеле, Немерле и Скале он будет тривиален.
А есть еще такие дадачки как запустить Word и прочесть данные из файла. Тут на плюсах придется встать раком (на создавать ком-серверов), а в Питоне и вообще не ясно что делать. Хаскель со Скалой видимо тоже будут в пролете. А на Немерле без проблем.
Re[37]: Портирование нитры.
Здравствуйте, alex_public, Вы писали:
_>Это был тестовый пример. А в реальности это выглядело бы скорее всего как-то так:
_>
_>и было бы весьма распространённым случаем (причём в роли T тут могли бы быть как double, так и какой-нибудь boost::multiprecision::number< boost::multiprecision::mpfr_float_backend<100>>).
А я бы в таком случае сделал бы пару перегрузок и вообще без лямбд обошелся бы (все таки в Немерле они не бесплатные):
Так что это не аргумент. А лямбду ты тоже вряд ли стал бы переиспользовать.
_>1. Где пример реализуется с такой же лаконичностью. Для обсуждаемого примера к этой группе будет относиться Хаскель и т.п.
_>2. Где пример реализуется, но чуть более громоздко. Для обсуждаемого примера к этой группе будет относиться C++, Scala, D и т.п.
_>3. Где пример вообще не реализуется. Для обсуждаемого примера в данную группу попадает и C# и Nemerle.
Я вот уверен, что если мы возьмем реальный (осмысленный и не тривиальный), а не надуманный, пример. То в итоге в лучшем случае твоя Питоновская реализация будет не меньшего размера, а напишешь рабочую версию ты за большее время.
А надуманные синтетические примеры — это ни о чем. Я тебе могу тоже привести пример со сложным паттернматчингом, который ты на С++ и Питоне задобаешся выписывать, а на Хаскеле, Немерле и Скале он будет тривиален.
А есть еще такие дадачки как запустить Word и прочесть данные из файла. Тут на плюсах придется встать раком (на создавать ком-серверов), а в Питоне и вообще не ясно что делать. Хаскель со Скалой видимо тоже будут в пролете. А на Немерле без проблем.
_>Это был тестовый пример. А в реальности это выглядело бы скорее всего как-то так:
_>
_>template<typename T> auto mycalc(const vector<T>& v){
_> return accumulate(v.cbegin(), v.cend(), T{0}, [](auto& s, auto& x) {
_> return (s+x)/2;//и тут явно не такая формула
_> });
_>};
_>
_>и было бы весьма распространённым случаем (причём в роли T тут могли бы быть как double, так и какой-нибудь boost::multiprecision::number< boost::multiprecision::mpfr_float_backend<100>>).
А я бы в таком случае сделал бы пару перегрузок и вообще без лямбд обошелся бы (все таки в Немерле они не бесплатные):
mycalc(seq : Seq[int]) : int
{
mutable sum = 0;
foreach (x in v)
sum = (sum + x) / 2;
sum
}
mycalc(seq : Seq[double]) : double
{
mutable sum = 0.0;
foreach (x in v)
sum = (sum + x) / 2;
sum
}
Так что это не аргумент. А лямбду ты тоже вряд ли стал бы переиспользовать.
_>1. Где пример реализуется с такой же лаконичностью. Для обсуждаемого примера к этой группе будет относиться Хаскель и т.п.
_>2. Где пример реализуется, но чуть более громоздко. Для обсуждаемого примера к этой группе будет относиться C++, Scala, D и т.п.
_>3. Где пример вообще не реализуется. Для обсуждаемого примера в данную группу попадает и C# и Nemerle.
Я вот уверен, что если мы возьмем реальный (осмысленный и не тривиальный), а не надуманный, пример. То в итоге в лучшем случае твоя Питоновская реализация будет не меньшего размера, а напишешь рабочую версию ты за большее время.
А надуманные синтетические примеры — это ни о чем. Я тебе могу тоже привести пример со сложным паттернматчингом, который ты на С++ и Питоне задобаешся выписывать, а на Хаскеле, Немерле и Скале он будет тривиален.
А есть еще такие дадачки как запустить Word и прочесть данные из файла. Тут на плюсах придется встать раком (на создавать ком-серверов), а в Питоне и вообще не ясно что делать. Хаскель со Скалой видимо тоже будут в пролете. А на Немерле без проблем.