Здравствуйте, Oyster, Вы писали:
O>Попробуй скомпилить — скажет, что не все ветки возвращают значения. Для того, чтобы это понять, Nemerle знать не надо — достаточно знать тот же C++
Вообще-то match в Немерле просто неявно дописывает возбуждение исключения для не перекрытого диапазона значений и выдается предупрждение компилятора. Но вот if без else недопустим.
Наверно самая разумная запись будет:
def Fact(x : int) : int
{ | 0
| 1 => 1
| x when x > 0 => x * Fact(x - 1)
| _ => throw ArgumentException("x")
}
... << RSDN@Home 1.2.0 alpha rev. 637>>