f(x) синтаксис

О том, почему проекты Loglan и Lojban не популяризируются и как расширенная концептуализация ведет к потери семантики.

В, так называемых, императивных языках, пришедших на смену ассемблерным с их “арными командами“ - инструкциями и макросами, всегда были функции и процедуры, отличающиеся друг от друга, прежде всего, этой самой “арностью“ на выходе, если рассматривать их с точки зрения черного ящика. То есть, имя функция при возвращении получало некоторое вычисленное значение. Отсюда и раличие в вызовах, которые, в случае процедур, указывалось явно (call, do, make, …). И такой подход полностью соответствует конвенциям в математике, в которой, кстати, в случае многозначного вывода используется другая терминология типа операторов или функторов. Попытки связать продукционный, логический подход с “функциональным“, в котором, ещё и присутствуют семантика именованных и анонимных “функций“ (лямбда) вносит только путаницу, которая, в частности, ещё и отражается в синтаксисе.

Почему, глядя на скобки, у некоторых людей возникает ассоциация с классическим, оригинальным Lisp, вместо того, чтобы думать о cons (car cdr) … В конце концов, тот же Мински писал о фреймах как систем пар слотов (об объектах в современной терминологии в сфере информатики). Так вот, возвращаясь к форме f(x), которая как аппликация может быть выражена и без скобок, то есть просто x f, где между “именами“ можно ещё поставить, например, “стрелку“ для ориентации перехода, чтобы не путать анализатор с теми же арифметическими операциями. Скобки нам нужны и необходимы для того, чтобы “инкапсулировать“ наборы (последовательности, серии) “атомов“ и не зачем более. Отсюда и замечание по поводу конвенций типа считать, например, “голову“ именем функции, а “хвост” уже набором параметров или аргументов. И вот, именно, это приводит к потери семантики, когда на уровне синтаксиса теряется различие между входными и выходными параметрами. То есть требуются дополнительные комментарии, которые могут быть неаккуратно задокументированы.

К чему эти замечания? Во-первых, как демонстрация, некоторой непродуманной практики. А во-вторых, акцентировать лишний раз проективную грамматику, в которой процессы выражаются как серии препозиций. Мы можем определять серии, предварительно их именуя, например так A: (* * …), а потом работать с этим списком как с определенным именем уже в аппликативном стиле. То есть скобки, только для инкапсуляции, собственно, списков … для идентификации вложенности, иерархии и необходимой семантики … напрмер, различая скобки, чтобы автоматизировать выбор интерпретаторов (обработчиков), как, например, предлагается в ASON формате. И тогда, практически, не будет необходимости для специального псевдокода спецификаций! У нас будет один мета-интерфейс, коррелирующий также с графическим и, собственно, с графовым представлением.

Updated on