Re[31]: Вопрос к Vlad2: Nemerle & R#
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 27.03.06 10:47
Оценка:
Здравствуйте, Oyster, Вы писали:

O>
O>namespace Oyster
O>{
O>  public module Math
O>  {
O>    // Просто метод, который просто считает факториал в рантайме
O>    static public Fact(x : int) : int
O>    {
O>      | 1 => 1
O>      | _ =>
O>        if (x > 1)
O>          x * Fact(x - 1)
O>        else
O>          throw ArgumentException("x")
O>    }
O>  }
O>}
O>


Кстати, если сравнить реализацию compile-time вычисления факториала на C++:
template< int N >
struct Factorial {
    enum { value = N * Factorial< N-1 >::value };
};

template<>
struct Factorial< 1 > {
    enum { value = 1 };
};

template<>
struct Factorial< 0 > {};

то мне кажется, что она получается в более функциональном стиле, что ли И не на много длиннее в реализации.
Вот только синтаксический оверхэд в виде template<> struct под ногами путается
Зато компилятор не дает вычислять факториал нуля


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.