Информация об изменениях

Сообщение Re[37]: Портирование нитры. от 16.02.2017 3:14

Изменено 16.02.2017 3:16 VladD2

Re[37]: Портирование нитры.
Здравствуйте, alex_public, Вы писали:

_>Это был тестовый пример. А в реальности это выглядело бы скорее всего как-то так:

_>
_>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, Вы писали:

_>Это был тестовый пример. А в реальности это выглядело бы скорее всего как-то так:

_>
_>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 и прочесть данные из файла. Тут на плюсах придется встать раком (на создавать ком-серверов), а в Питоне и вообще не ясно что делать. Хаскель со Скалой видимо тоже будут в пролете. А на Немерле без проблем.