Язык Твой Враг Твой
Конечно же, новый язычок не мог обойтись без гибкой концепции процедурных блоков.
BLOCK Add
VAR x, y, res INTEGER
PAR x, y, res* FUNC res(x, y)
BEGIN
a + b -> res
END Add
Add[1, 2, fx]
Add[x: 1, y: 2, res::fx]
Add(1, 2) -> fx
Add(x: 1, y: 2) -> fx
1 \Add 2 -> fx
Тут тебе и процедура, и процедура с переменным числом параметров, и функция, и наличие именованных параметров, и даже, не может быть, инфиксный вызов (надо ограничить его только для одного и двух операндов)!