Re[33]: Вопрос к Vlad2: Nemerle & R#
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.03.06 01:25
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

VD>>Кстати, раз уж мы говорим о функциональном языке, то факториалы лучше тоже в функциональном стиле описывать:


VK>Код который ты привел крайне похож на то, что генерирует макрос for.


Естественно.

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


Откровенно говоря не вижу в данном случае особой разницы.
def Fact(x : uint) : ulong
{
    mutable acc = 1UL;
    
    for (mutable i = x; i > 0; i--)
        acc = acc * i;
    
    acc
}

и:
def Fact(x : uint) : ulong
{
  def Loop(acc : ulong, x : uint)
  {
    if (x <= 1) acc else Loop(acc * x, x - 1)
  }
  
  Loop(1UL, x)
}

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

Однако если уж используется рекурсия, то глупо отакзываться от концевой рекурсии. Ведь это точно даст выигрыш в скорости. А ввести внутреннюю функцию и акумулятор не проблема.

ЗЫ

Похоже у тебя и правда плохое настроение.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.