среда, 26 июля 2017 г.

Ни о чём. Хотя и о "многом". Как посмотреть

Вообще - "функциональщина" - она "рулит" - http://programmingmindstream.blogspot.ru/2017/07/blog-post.html?m=1

Вспоминается LISP и FORTH. И "множество скобочек".

А ещё я сделал реализацию "алгебры отношений" для кодогенерации.

Вместо:

Elem a
 Elem b
  Elem c
  End c
  Elem d
  End d
  Elem e
  End e
 End b
End a

Я сделал:

Elem a
Elem b
Elem c
Elem d
Elem e

Relation Children a ( b )
Relation Children b ( c d e )

То есть я сначала вытянула все "понятия" в плоский список (буквы словаря опрелелил), а потом ОТДЕЛЬНО определил "отношения" (слова) - между "понятиями".

И стало возможно определять другие "отношения":

Relation Uses b ( a )
Relation Inherits d ( c )
Relation Implements d ( e )

И дальше уже пошла чистая "алгебра отношений" или говоря проще для ремесленников - операции над коллекциями. Их фильтрация, трансформация, сортировка, объединение, вычитание, удаление дубликатов и т.д. И т.п.

b .Uses .join ( d .Inherits ) .filter ( != c ) .transform .toString .sort .stringCompare .forEach .print

- надеюсь "интуитивно понятно".

Объединяем элементы используемые b с элементами унаследованного от d. Выкидываем те, что равны c. Результат преобразуем к массива строк. Сортируем. Перебирается поэлементно. Каждый элемент - печатаем.

И тут уже вспоминается Prolog и его "атомы" и "предикаты".

Комментариев нет:

Отправить комментарий