Система автоматической унификации назначений данных (САУНД) разрабатывается для повышения внятности программирования. Идея обсуждалась ранее. Приведем эксперименты по созданию спецификации языка программирования.
def c = add(a, b, carry=0): not a and not b => carry => c = [carry] else => c = [] else => not a => @a = [0] not b => @b = [0] a = [a' x] b = [b' y] last = (x + y + carry) % base new_carry = (x + y + carry) // base c = [add(a', b', new_carry), last] def m = findmin(a): m = nil a => run enumerate(i=a.begin): i < a.end => *i < *m => m = i enumerate(i.next) def sort(@a): a => a = [x a'] i = findmin(a') swap(@x, *i) sort(@a') def s = sum(a): a => a = [x a'] s = x + sum(a') else => s = 0 def pythagorean_table(n): run rows(i=1): i <= n => run cols(j=1): j <= n => print(i * j) cols(j + 1) print("\n") rows(i + 1)
Условные конструкции обозначаются символом =>, вместо циклов - рекурсивный вызов функции-блока.
Квадратные скобки обозначают операцию создания списка либо добавления элемента к списку, аналогично MATLAB.
Символ @ используется при вызове функций, чтобы указать на возможность модификации переменной.
Символ * перед переменной обозначает операцию разыменования итератора.
Ключевое слово run используется для запуска функции-блока.
В языке отсутствуют операторы, прерывающие ход выполнения программы, такие как return, break, continue.