Combinators untuk Fungsi Rekursif Primitif


Jawaban:


17

Ya, tetapi Anda harus mempertimbangkan kombinator yang diketik. Artinya, Anda perlu memberi dan K skema jenis berikut: K : A → B → A S : ( A → B → C ) → ( A → B ) → ( A → C )SK

K:SEBUAH→B→SEBUAHS:(SEBUAH→B→C)→(SEBUAH→B)→(SEBUAH→C)
mana , dan C adalah meta-variabel yang dapat dipakai untuk semua jenis beton pada setiap penggunaan.SEBUAH,BC

Kemudian, Anda ingin menambahkan tipe dari bilangan asli ke bahasa tipe, dan menambahkan kombinator berikut: z : N s u c c : N → N i t e r : N → ( N → N ) → N → NN

z:Nskamucc:N→Nsayater:N→(N→N)→N→N

Aturan kesetaraan untuk penambahan adalah:

sayatersayafz=sayasayatersayaf(skamucce)=f(sayatersayafe)

sayater:SEBUAH→(SEBUAH→SEBUAH)→N→SEBUAH
sayater

sayater

halred′=λk.sayater(z,z)(λ(n,n′).(skamuccn,n))khalred=λk.snd(halred′k)

N≃N×N


Jadi ini kurang dari Turing-lengkap karena pembatasan untuk combinator yang diketik? Bisakah variabel tipe (secara rekursif) menunjukkan fungsi lebih dari variabel tipe (mis. A = D -> E untuk beberapa tipe D dan E)?
— NietzscheanAI

2
SK

Neel, terima kasih. Apakah saya benar dalam berpikir bahwa itu mungkin untuk mewakili z, succ dan iter dalam hal S dan K melalui pengkodean angka Gereja?
— NietzscheanAI

0↦0(skamuccx)↦x

@ Xoff: fungsi pendahulunya memiliki definisi waktu linear yang terkenal iter. Ini bisa menjadi objek pertanyaan di cs.stackexchange.com ...
— cody
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.