]]> ]]>

Факториал в ML

Пример для версий MLton 20070826, Moscow ML 2.01, SML/NJ 110.69

В примере используется рекурсивное определение факториала. ^ — оператор конкатенации строк; преобразование чисел в строки выполняется в явном виде. ;; в конце программы — сигнал для интерактивной среды, что блок программы дописан и может быть интерпретирован. Во всех реализациях возникает ошибка переполнения при вычислении 13!, и программа прерывается.

Отметим, что Int (библиотека для работы с целыми числами) входит в базовую библиотеку Standard ML, но SML/NJ и MLton подгружают ее автоматически, а Moscow ML — нет. Чтобы эта программа заработала в Moscow ML, ее следует запускать с опцией -P full.

fun factorial n =
  if n <= 0 then 1
  else n * factorial (n-1)

val n = ref 0;
while !n <= 16 do (
  print (Int.toString (!n) ^ "! = " ^ Int.toString (factorial (!n)) ^ "\n");
  n := !n + 1
);;

Комментарии

]]>

blog comments powered by Disqus

]]>

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