История изменений
Исправление balsoft, (текущая версия) :
Если мы делаем графическое описание чистых функциональных программ, то я бы сделал гораздо проще.
- Каждая «нода» представляет из себя функцию или конкретное значение или тип. Она обязана иметь тип.
- «Соединение» нод – применение функции
- «Область» – определение новой функции (по сути, именование лямбды) или нового алгтипа с помощью соединения нод и придания этой конструкции имени (имя может быть пиктограммой, это не принципиально)
- «Диаграмма» – совокупность областей, причем некоторые области «внутренние» (т.е. видны только для областей данной диаграммы), а некоторые – внешние (т.е. экспортируются и видны и изнутри, и снаружи)
- «Программа» – диаграмма, экспортирующая область, именующую аналог
main :: IO ()
- «Библиотека» – диаграмма, экспортирующая несколько областей.
Наверное, это было бы очень удобно делать на каком-нибудь завтипном языке типа идриса, ибо тогда система типов этого языка идеально ложилась бы на систему типов нашего условного метапрога. С хаскелем так не прокатит – нужно либо велосипедить, либо костылить.
Исходная версия balsoft, :
Если мы делаем графическое описание чистых функциональных программ, то я бы сделал гораздо проще.
- Каждая «нода» представляет из себя функцию или конкретное значение. Она обязана иметь тип.
- «Соединение» нод – применение функции
- «Область» – определение новой функции (по сути, именование лямбды) или нового алгтипа
- «Диаграмма» – совокупность областей, причем некоторые области «внутренние» (т.е. видны только для областей данной диаграммы), а некоторые – внешние (т.е. экспортируются и видны и изнутри, и снаружи)
- «Программа» – диаграмма, экспортирующая область, именующую аналог
main :: IO ()
- «Библиотека» – диаграмма, экспортирующая несколько областей.
Наверное, это было бы очень удобно делать на каком-нибудь завтипном языке типа идриса, ибо тогда система типов этого языка идеально ложилась бы на систему типов нашего условного метапрога. С хаскелем так не прокатит – нужно либо велосипедить, либо костылить.