Введение в теорию программирования. Функциональный подход

       

Функции и типы


Функции в языке SML задаются по аналогии с их математическим представлением. При этом тип может быть задан как в явном виде, например:

fun square(x:int) = x*x

так и опущен (неявно задан на этапе компиляции). Производные типы в языке SML строятся из множества базисных типов. Так, функция с аргументом int и результатом string, будет иметь тип int -> string.

Возможно также задание функции с использованием fn-выражения

val square = fn x => x * x.

Базисные типы и функции языка SML.

  • bool — логический тип данных. В модуле bool над ним определены такие операции, как отрицание (val not: bool -> bool), преобразование к строковому типу (val toString: bool -> string), а также преобразование из строкового типа (val fromString: string -> bool).
  • word — тип, представляющий из себя целое число без знака, и, как правило, хранящийся в форме машинного представления слова. В соответствующем модуле определены преобразования для данного типа (например, val toInt : word -> int), а также арифметические (например, val + : word * word -> word) и логические (например, val > : word * word -> bool) операции.
  • char — символьный тип данных. В модуле char также определены функции преобразования (val toString : char -> String.string), логические операции (val isDigit : char -> bool) и другие функции.
  • real — число с плавающей точкой. В модуле real определены операции преобразования (val toString : real -> string), а также сравнения (val >= : real * real -> bool), преобразования форматирования и точности (val maxFinite: real).
  • int — целочисленный тип.
  • string — тип символьной строки.

Общее описание типов данных и функций SML.NET хранится в форме файлов с описанием интерфейса в директории \src\basis целевого каталога компилятора.



Содержание раздела