Saya mempelajari teorema smn dan konsepnya mengingatkan saya pada kari.
Dari artikel wikipedia tentang teorema smn :
teorema mengatakan bahwa untuk bahasa pemrograman yang diberikan dan bilangan bulat positif m dan n, ada algoritma tertentu yang menerima sebagai input kode sumber program dengan variabel bebas m + n, bersama dengan nilai m. Algoritma ini menghasilkan kode sumber yang secara efektif menggantikan nilai-nilai untuk variabel bebas m pertama, meninggalkan sisa variabel bebas.
Dari sebuah artikel tentang kari :
Secara intuitif, currying mengatakan "jika Anda memperbaiki beberapa argumen, Anda mendapatkan fungsi dari argumen yang tersisa"
Sepertinya ide yang sama bagi saya. Satu-satunya alasan mengapa saya tidak yakin adalah bahwa materi yang saya temui di smn tidak menyebutkan kari (dan sebaliknya), jadi saya ingin berkonsultasi untuk memastikan saya benar-benar mendapatkannya.
sumber
Jawaban:
Ya, itu adalah hal yang sama.
Currying adalah konsep dari -calculus. Ini adalah transformasi antara dan . Anggap ini sebagai "jika kita memiliki fungsi dua argumen tipe dan , maka kita dapat memperbaiki argumen pertama (tipe ), dan kita akan mendapatkan fungsi argumen yang tersisa (tipe )". Sebenarnya, transformasi ini adalah isomorfisme. Ini dibuat secara matematis tepat dengan model matematika dari (diketik) -calculus, yang merupakan kategori tertutup kartesian .λ A×B→C A→(B→C) A B A B λ
Ada kategori set bernomor. Himpunan bernomor adalah pasangan mana adalah himpunan dan adalah surjection parsial , yaitu peta dari angka ke , yang mungkin juga tidak terdefinisi. Jika maka kita mengatakan bahwa adalah kode dari . Dalam teori komputabilitas ada banyak contoh. Setiap kali kami menyandikan beberapa informasi dengan angka, kami mendapatkan set bernomor. Sebagai contoh, ada penomoran standar dari fungsi yang dapat dihitung sebagian, sehingga adalah angka yang dihitung oleh fungsi sebagian yang dapat dihitung yang dikodekan oleh(A,νA) A νA:N→A A νA(n)=x n x φ φn(k) n ketika diterapkan pada . (Hasilnya mungkin tidak terdefinisi.)k
Morfisme himpunan bernomor adalah peta terealisasi , yang berarti ada sedemikian rupa sehingga untuk semua dalam domain . Ini terlihat rumit, tetapi yang dikatakannya adalah melakukan kode apa yang dilakukan terhadap elemen. Ini adalah cara matematika untuk mengatakan bahwa "program mengimplementasikan fungsi ".f:(A,νA)→(B,νB) n∈N f(νA(k))=νB(φn(k)) k νA φn f ϕn f
Inilah lucunya: kategori set bernomor ditutup kartesian. Karena itu, kita dapat menginterpretasikan -calulus yang diketik di dalamnya, dan menanyakan program apa yang mengimplementasikan operasi kari. Jawabannya adalah: program yang diberikan oleh teorema smn.λ
sumber