Alır (CPS dönüşümü) dönüşümü devam geçen hatırlayın için p A : = R ' R' bir (ki burada R ' sabitlenmiştir) ve f : A → B için β f : β bir → β B ile tanımlanan p Aslında η A : A → β A birimi η A x : = λ r ile tanımlanan devam monadımızvar . r
Şimdi bir ikili haritayı nasıl dönüştürebileceğimizi düşünelim , yani γ f : β A → β B → β C istiyoruz . Biri çabucak gelir γ Bu da programlama açısından anlamlıdır.
İşte sorum: için programlama açısından doğru görünmesinin dışında daha derin bir neden var mı? Örneğin, γ mantıklı düşünmenin bir kategori-teorik veya başka bir "teorik" nedeni var mı? Örneğin , monad'dan sistematik bir şekilde γ pişirebilir miyiz ?
Ben -ary fonksiyonların CPS dönüşümleri hakkında bir fikir arıyorum .
liftA2
önerdiğim şeyin bir parçasıydı. Buradaki "deyim parantez" kavramı ( (| f x y z ... |)
çevirir pure f <*> x <*> y <*> z <*> ...
) Applicative
, sorunuzun n-ary biçimini almanın sistematik bir yolu gibi görünür. BT'yi biliyorum, ancak standart programlama terimleriyle konuşmak en basit gibi görünüyordu. Daha Applicative
önce karşılaşmamış olsaydınız, gevşek monoidal functorlara bakmak isteyebilirsiniz (Haskell'in bunun ifadesi <*>
katlanarak da olsa). Her neyse, senin için bir cevabım yok ama ne elde ettiğini daha iyi anlamaya çalışıyordum :)
liftM2
veya genellemelerin ötesinde bir şey mi arıyorsunuzApplicative
? Açıkladığınız şeyin n-ary sürümünü (n-ary polimorfik fonksiyonlar hakkında konuşmanızı sağlayan bir dilde) doğrudan devam eden uygulama yapısından türetebilirsiniz.