Нагадаємо продовжуючу передачу перетворення (CPS перетворення), яка приймає від до (де закріплено) і до визначено Насправді у нас є монада продовження з одиницею визначена і множення визначене β A : = R R A R f : A → B β f : β A → β B βη A : A → β A η A x : = λ r . r
Тепер давайте подумаємо про те , як ми можемо перетворити двійкове відображення , тобто, ми хочемо . Швидко з'являється Це має сенс і з точки зору програмування.γ f : β A → β B → β C γ
Ось моє запитання: чи є глибша причина , крім того, що вона виглядає правильно з точки зору програмування? Наприклад, чи є теоретична категорія чи інша "теоретична" причина думати, що має сенс? Наприклад, чи можемо ми готувати з монади систематично?γ γ
Я шукаю уявлення про перетворення CPS -ary функцій.
Applicative
. Тут liftA2
є моя , див. Hackage.haskell.org/packages/archive/base/4.2.0.0/doc/html/…
liftA2
було частиною того, що я пропонував. Поняття "дужка ідіоми" ( (| f x y z ... |)
перекладається з pure f <*> x <*> y <*> z <*> ...
) Applicative
здається систематичним способом отримання n-арної форми вашого запитання. Я знаю КТ, але здавалося, що простіше говорити про це у стандартних програмування. Якщо ви раніше не стикалися Applicative
, ви, можливо, захочете поглянути на в'ялі моноїдальні функтори (хоча заява Хаскелла про це <*>
містить і експоненти). У всякому разі, у мене немає відповіді для вас, але я намагався краще зрозуміти, що ви отримуєте :)
liftM2
чи узагальненняApplicative
? Ви можете отримати n-ary-версію описаного вами (мовою, яка дозволяє говорити про n-ary поліморфні функції) безпосередньо з додаткової структури продовження.