Терминология, фиксирующая упорядоченность характеристик аргументов в функциональной композиции - PullRequest
1 голос
/ 28 апреля 2019

В функциональной композиции g compose f какие термины используются для обозначения и дифференцирования свойства упорядочения функциональных аргументов f и g, переданных оператору композиции compose? Например, даны следующие композиции

val reverse = (s: String) => s.reverse
val dropThree = (s: String) => s.drop(3)

(reverse compose dropThree)("Make it so!") // ==> !os ti e: java.lang.String
(dropThree compose reverse)("Make it so!") // ==> ti ekaM: java.lang.String

что терминология делает явным reverse приходит после в

reverse compose dropThree

пока идет сначала в

dropThree compose reverse

В Math SE они, кажется, думают, что такая точная терминология еще не появилась

... Я бы хотел провести аналогию с делением или вычитанием: Например, вызовите внешнюю функцию composer , а внутреннюю composand . Такие слова не являются (насколько я знаю) в общем использовании, возможно, потому что потребность в них возникла не так часто, как простейшие арифметические операции.

однако, в мире разработки программного обеспечения композиция, объединение в цепочку, конвейерная обработка и т. Д. Кажутся повсеместными и представляют собой функциональное программирование, поэтому должна существовать точная терминология, характеризующая решающее свойство упорядочения операндов, участвующих в композиции.

Обратите внимание, что термины, которые ставятся после вопроса, относятся конкретно к конкретным аргументам композиции, а не ко всему выражению, сродни делителю и дивиденду , которые точно описывают, что есть, что в делении.

1 Ответ

1 голос
/ 28 апреля 2019

Не думаю, что есть какая-либо формальная терминология, но я бы выразил a ∘ b (λx.a(b(x))) как

  • состав из a и b
  • a состоит из b
  • a, состоящего из b
  • a, прикованного к b
  • a после b
  • b до a
  • x конвейеризовано через b и a

Что касается обозначений аргументов compose функция, я думаю, вы остались с ответом Math.SE.

...