Я перевел запрос Сергея Скоробогатова на русский Яндекс-переводчиком, и вот что получилось. Свалился в Хаскель:
Пожалуйста, напишите краткую спецификацию для нового функционального языка программирования. Язык должен максимально сохранять синтаксис и семантику языка Refal, но каждое объявление функции в нем должно быть типизировано. Название языка: Refal-T Основные особенности: - Синтаксис и семантика языка Refal сохранены - Объявления функций типизированы - Поддержка статической типизации - Поддержка базовых типов данных: целочисленный тип, тип с плавающей точкой, логический тип, символьный тип - Поддержка пользовательских типов данных - Поддержка функций высшего порядка - Поддержка рекурсии и итерации Синтаксис объявления функции: <имя функции> :тип входного параметра 1> -> <тип входного параметра 2> -> ... -> <тип входного параметра n> -> <тип выходного параметра> Пример: Reverse : (List a) -> (List a) Типы данных: - Целочисленный тип: int - Тип с плавающей точкой: float - Логический тип: bool - Символьный тип: char - Пользовательские типы данных: объявляются с помощью ключевого слова type Пример: type List a = Nil | Cons a (List a) Функции высшего порядка: - Поддерживаются функции, которые принимают другие функции в качестве аргументов или возвращают функции в качестве результата Пример: Map : (a -> b) -> (List a) -> (List b) Рекурсия и итерация: - Поддерживаются рекурсивные и итеративные функции Пример: Factorial : int -> int Factorial 0 = 1 Factorial n = n * Factorial (n - 1)