SORU
4 Mayıs 2012, Cuma


Cebirsel polimorfizmi çeviri

Türleri temel cebirsel yorumu ben anlayamıyorum:

Either a b ~ a   b
(a, b) ~ a * b
a -> b ~ b^a
()   ~ 1
Void ~ 0 -- from Data.Void

... ve bu ilişkileri beton türleri için geçerli, gibi a gibi polimorfik etkende Bool,. Ben de sadece aşağıdaki izomorfizm göre Kilise kodlama çevirerek beton türü kendi sunumlarını polimorfik türleri ile tür imzaları nasıl çevireceğini bilir:

(forall r . (a -> r) -> r) ~ a

Eğer var ise:

id :: forall a . a -> a

id ~ a^a, ama aslında demek anlamına gelmez biliyorum:

id :: forall a . (() -> a) -> a
id ~ ()
   ~ 1

Benzer:

pair :: forall r . (a -> b -> r) -> r
pair ~ ((a, b) -> r) - > r
     ~ (a, b)
     ~ a * b

Benim aklıma bir soru getiriyor. "Yorumu bu kural: . cebirsel nedir

(forall r . (a -> r) -> r) ~ a

Her beton türü izomorfizma için eşdeğer cebirsel bir kural işaret gibi:

(a, (b, c)) ~ ((a, b), c)
a * (b * c) = (a * b) * c

a -> (b -> c) ~ (a, b) -> c
(c^b)^a = c^(b * a)

Ama benzer bir cebirsel eşitlik anlamıyorum:

(forall r . (a -> r) -> r) ~ a

CEVAP
5 Mayıs 2012, CUMARTESİ


Bu Yoneda lemma kimlik için ünlü eşleme.

Daha fazlası için okunabilir giriş ve herhangi bir kategori teorisi bir ders kitabı this posta çeki.

Kısaca, f :: forall r. (a -> r) -> r verilen f id ** 22, ve tersine, x :: a verilen almak uygulayabilirsiniz ($x) forall r. (a -> r) -> r alabilirsiniz.

Bu işlemleri karşılıklı olarak ters. Kanıt:

Belli ki ($x) id == x. Bunu göstereceğim

($(f id)) == f,

fonksiyonlar tüm değişkenler eşit olduğunda eşit olduğu, x :: a -> r alıp gösteriyor

($(f id)) x == f x yani

x (f id) == f x.

f polimorfik olduğu için, doğal bir dönüşüm olarak; f doğallık diyagramı çalışır:

               f_A
     Hom(A, A)  →  A
(x.)      ↓        ↓ x
     Hom(A, R)  →  R
               f_R

x . f == f . (x.).

Kimlik (x . f) id == f x takmak. QED

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andytokkallos

    Andytokkallo

    27 Kasım 2007
  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • megablueblaster

    megablueblas

    23 HAZİRAN 2006