Nemerle
- Дата создания:
- 2003
- Создан под влиянием:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .n
- Реализации и версии (свернуть все | развернуть все):
Nemerle (назван в честь архимага из “Волшебника Земноморья” Ле Гуин) — высокоуровневый язык программирования, предоставляющий возможности функционального, императивного и объектно-ориентированного программирования. Синтаксис языка похож на синтаксис C#.
Элементы синтаксиса:
Комментарий до конца строки | // |
---|---|
Комментарии, которые не могут быть вложенными | /* ... */ |
Регистрозависимость | да |
Примеры:
Hello, World!:
Пример для версий ncc 0.9.3Пример в стиле C#. Более простая запись не требует оформления в класс:
System.Console.WriteLine("Hello, World!");
class Hello {
static Main () : void {
System.Console.WriteLine ("Hello, World!");
}
}
Числа Фибоначчи:
Пример для версий ncc 0.9.3Используется рекурсивное определение чисел Фибоначчи, записанное в функциональном стиле. Следует отметить объявление счетчика цикла i — ключевое слово mutable, в отличие от обычного def, означает, что переменная будет изменяться.
def fib(i)
{
| x when x<2 => 1
| _ => fib(i - 2) + fib(i - 1)
}
mutable i=0;
while (i<16)
{ System.Console.Write("{0}, ", fib(i));
i++;
}
System.Console.WriteLine("...");
Факториал:
Пример для версий ncc 0.9.3Используется рекурсивное определение факториала; хвостовая рекурсия оптимизируется до цикла при компиляции. За счет использования типа int по умолчанию при попытке вычислить 13! возникает ошибка переполнения:
Unhandled Exception: System.OverflowException: Number overflow.
def fact(i)
{
| 0 => 1
| other => other * fact(other - 1)
}
for (mutable i=0; i<16; i++)
System.Console.WriteLine("{0}! = {1}", i, fact(i));
Комментарии
]]>blog comments powered by Disqus
]]>