Композиция функций в естественном порядке в Haskell - PullRequest
0 голосов
/ 01 декабря 2018

Мы все знаем и любим / ненавидим композицию справа налево:

(.) :: (b -> c) -> (a -> b) -> a -> c 

Что такое «самый стандартный» оператор (как в какой-то общей библиотеке) для естественной композиции / композиции слева направо:

(???) :: (a -> b) -> (b -> c) -> a -> c

, который обобщает оператор здравого смысла для значений, рассматриваемых как функции из ():

(&) :: a -> (a -> b) -> b 

, доступные в нескольких библиотеках

PS: если естьНет ли какой-либо стороны для имени такого оператора?в математике естественная композиция очень часто пишется ";"но что будет вторым лучшим именем?(&.) может быть?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Состав функции - это форма приложения функции.(.) = (<$>) и (<$>) названы так, потому что они представляют приложение функции (($)) через функтор.Точно так же у нас есть приложение обратной функции, (Data.Function.&), и у нас также есть приложение обратной функции через функтор, (Data.Functor.<&>).По сравнению с (>>>), (<&>) избегает вызова Category, просто Functor, но, с другой стороны, это относительно новое дополнение к base.

0 голосов
/ 01 декабря 2018
import Control.Arrow
(>>>) :: (a -> b) -> (b -> c) -> a -> c

На самом деле, (>>>) является более общим, чем это, поскольку он работает с любой категорией, а не только с (->) функциями.Тем не менее, он часто используется для композиции функций пересылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...