Bağımlı olarak tiplendirilmiş eliminatörler nasıl türetilir?


10

Bağımlı olarak yazılan programlamada, verileri ayrıştırmanın ve özyineleme yapmanın iki ana yolu vardır:

  • Bağımlı örüntü eşleme : fonksiyon tanımları birden fazla cümle olarak verilir. Birleştirme, atlanan tüm vakaların imkansız olmasını sağlar ve harici bir çözücü, özyinelemenin sağlam temelini sağlar.
  • Eliminators : Her endüktif veri tipi , bir indüksiyon prensibi olarak ve tipi değerleri ayrıştıran tekrarlayan fonksiyon olarak ilişkili bir sabit sahiptir . Bunlar daha ayrıntılıdır, ancak toplam olma (tüm vakalar tarafından ) ve inşaat ile sona erme avantajına sahiptir .DEDDED

Eliminatörün temelde matematiksel indüksiyon olduğu gibi ortak veri tipleri için eliminatörleri veya eliminatörün temelde bir kat olduğu gördüm .N-birtLbenst

Bağımlı örüntü eşleştirmesi üzerine birkaç makale okudum ve birçoğu veri tiplerinin tanımlanabileceği ve teori tarafından eliminatörlerin sağlandığı tip teorilerini ifade ediyor. Örneğin, Bağımlı Patern Eşleştirmesinin Ortadan Kaldırılması , UTT'nin eliminatörlere nasıl dayandığını ve patern eşleşmesinin aksiyom varlığında eliminasyona nasıl dönüştürülebileceğini açıklar . Anladığım kadarıyla, bir veri türü tanımlandıktan sonra teori, eliminatörü sağlar.K

Bulduğum (ya da en azından, eğer gördüysem tanımadığım), eliminatörleri, hem türlerini hem de anlamlarını nasıl türetebileceğinin iyi bir açıklamasıdır.

Birisi beni bir veri tipi tanımından nasıl bir eliminatör elde edebileceğini açıklayan bir referansa işaret edebilir mi?


Eminim inşaatlar veya Coq literatüründe bir açıklama vardır (kesinlikle pozitif tipler için - Coq'un daha karmaşık tiplerdeki eliminatörleri tam olarak genel değildir).
Gilles 'SO- kötü olmayı kes'

@Gilles Anladığım kadarıyla Coq eliminatörleri kullanmadı, bunun yerine ayrı kibrit ve (korumalı) düzeltme operatörleri kullandı.
20'de jmite

3
Çekirdek dil eliminatörleri kullanmaz, ancak bir tür tanımladığınızda, Coq fixve ve olarak tanımlanan bir eliminatör üretir match. Elimde bir referans yok, ama bu eliminatörün nasıl üretildiği hakkında bir şeyler okuduğumu biliyorum. cs.stackexchange.com/questions/104/… ilgi çekici olabilir.
Gilles 'SO- kötü olmayı bırak'

Herhangi bir endüktif tip için TCoq, T_indbağımlı bir eliminatör olan bir indüksiyon prensibini tanımlar . Bu, özyineleme ve kalıp eşleşmesi açısından tanımlanır, ancak prensip olarak aynı türde (aynı anlamsallıkla) yeni bir sabit olarak kabul edebilirsiniz.
chi

Yanıtlar:


8

Bunun kanonik referansı , eliminatörlere dayanan tümevarımcı ailelere oldukça kapsamlı bir tedavi sağlayan Endüktif Aileler Peter Dybjer'dir .


6

Lambda kodlu veri türleri için eliminatörleri türettiğimizden, bu konuyla ilgili son yayınlarımızdan bazılarını yararlı bulabilirsiniz . Örneğin, bu bkz birini tutucuların jenerik derivasyon için ve bu bir temel tekniği için Nat türüne uygulanabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.