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:SEBUAHBSEBUAHS:(SEBUAHBC)(SEBUAHB)(SEBUAHC)
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 : NN i t e r : N( NN ) NNN

z:Nskamucc:NNsayater:N(NN)NN

Aturan kesetaraan untuk penambahan adalah:

sayatersayafz=sayasayatersayaf(skamucce)=f(sayatersayafe)

sayater:SEBUAH(SEBUAHSEBUAH)NSEBUAH
sayater

sayater

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

NN×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

00(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.