]]> ]]>
Править | Обсудить | История

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

]]>

Работа программистам