Прежде всего, взгляните на это связанное обсуждение.
Как указывалось там, функциональное программирование уже довольно близко к математической записи и может быть хорошо понято и манипулировано символическая математика . Диаграммы в смысле ОО часто не нужны, поскольку они могут моделировать взаимодействия состояний, которые просто не существуют в FP.
Например, рекурсия очень хорошо обрабатывается в этом символическом подходе.Вы можете непосредственно расширить определения как истинные уравнения в математическом смысле, чтобы доказать характеристики и , чтобы получить довольно прямой, почти псевдокодоподобный обзор.
map f [] = []
map f (x:xs) = (f x) : map f xs
Ничего более ясногочем это!
Тем не менее, есть некоторые метафоры , которые полезны для определенных понятий, таких как функциональные средства моделирования состояния / последовательности, то есть монады , аппликативных, стрелки .Есть много хороших изображений, чтобы визуализировать, как они распространяют свои результаты.Например: метафора конвейерной ленты для стрелки :