Архитектурный шаблон трубы и фильтра определяется как цепочка обрабатывающих элементов, расположенных таким образом, что выходные данные каждого элемента являются входными данными следующего . Кажется, что в каждом примере рассматривается межпроцессное или межпотоковое соединение, выполняемое через некоторый общий буфер.
Мне кажется, что композиция функций Haskell выполняет ту же задачу. Можем ли мы сказать, что это экземпляр этого шаблона, даже если речь идет о порядке упорядочения функций, и в качестве канала не используется явный буфер? Если да, можем ли мы сказать то же самое для не ленивого языка?
CPO
категория? Мой гугл-фу слаб :(C
ompleteP
artialO
rders.Есть разница. Каналы и фильтры имеют дело с данными и соединениями данных, тогда как Композиция функций Haskell имеет дело с первоклассными функциями . Первоклассные функции компонуются так, как это делают каналы и фильтры.
Дальнейшее чтение
Что означает составляемость в контексте функционального программирования?
источник
++
, где композиция имеет значение.
,++ . ++
примет значение и вернет это значение, увеличенное вдвое, но++
не является функцией первого класса, она только принимает значение и возвращает значение. Композиционная функция является первой функцией класса, которая принимает две функции и возвращает одну.