Система автоматической унификации назначений данных (САУНД) разрабатывается для повышения внятности программирования. Идея обсуждалась ранее. Приведем эксперименты по созданию спецификации языка программирования.
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.