Anda di halaman 1dari 17

Resume

Fungsional Pemrograman I Elemen dari pemrograman

Oleh : M. LUKMAN BAIDHOWI ( 2210131034 )

JURUSAN TEKNIK KOMPUTER POLITEKNIK ELEKTRONIKA NEGERI SURABAYA 2013

Fungsional Pemrograman I Elemen dari pemrograman


A. Elemen-elemen Pemrograman
Sebuah bahasa untuk mengekspresikan proses komputasi membutuhkan: 1. Ekspresi Sederhana: Pernyataan yang evaluasi proses dan karenanya mereka nilai-nilai yang dibangun ke dalam alat bahasa. 2. Kombinasi berarti: Membuat ekspresi senyawa dari yang sederhana. 3. Abstraksi: Memanipulasi obyek senyawa sebagai unit berdiri sendiri. 4. Referensi: Referensi unit disarikan dengan nama mereka. Skema tersebut memiliki empat fitur dalam cara yang rapi dan baik : Syntax umum untuk semua obyek gabungan : definisi Prosedur,

prosedur aplikasi, benda-benda koleksi: daftar. Ada sebuah sintaks yang sederhana tunggal untuk semua objek yang dapat dikombinasikan, diringkas, diberi nama, dan direferensikan. menjelaskan bagaimana struktur program yang benar. Status semantik umum untuk semua objek komposit, termasuk prosedur.

1. Expression
Skema program adalah ekspresi. Ada ekspresi atom dan ekspresi komposit. Ekspresi dievaluasi oleh skema interpreter . Proses evaluasi mengembalikan nilai Scheme, yang merupakan elemen dalam tipe Skema. Skema interpreter beroperasi di loop read-eval-print: Bunyinya ekspresi, mengevaluasi, dan mencetak nilai yang dihasilkan. a. Ekspresi atom: Beberapa ekspresi atom sederhana: proses evaluasi mereka dan nilai-nilai kembali sudah dibangun ke Skema semantik, dan semua alat Skema dapat mengevaluasi mereka. Nomor atom adalah ekspresi sederhana di Skema. > 467 467 ,,, Ini adalah ekspresi sederhana. Boolean adalah ekspresi atom sederhana di Skema. >#t #t

Prosedur sederhana adalah ekspresi atom sederhana di Skema. >+ # <procedure:+> b. Ekspresi komposit: > (+ 45 78) 123 > (- 56 9) 47 > (* 6 50) 300 > (/ 25 5) 5 Satu-satunya tanda baca: "(", ")", "". Ekspresi komposit disebut forms atau kombinasi. Ketika dievaluasi, ekspresi paling kiri diambil sebagai operator, sisanya adalah operan. Nilai kombinasi diperoleh dengan menerapkan prosedur yang ditetapkan oleh operator kepada argumentasi, yang merupakan nilai-nilai dari operan. Ekspresi skema komposit ditulis dalam notasi Prefix. contoh kombinasi lainnya: (5 9), (* 5 9), (5 * 9), (* (5 9)).

2. Abstraksi dan Referensi: Variabel dan Nilai


Penamaan benda komputasi adalah fitur penting dari setiap bahasa pemrograman. Ketika kita menggunakan penamaan kita memiliki variabel yang mengidentifikasi nilai. Nilai berubah menjadi bernama objek. mendefinisikan adalah operator khusus Skema untuk penamaan. Ini menyatakan variabel, mengikat ke nilai, dan menambahkan ikatan terhadap lingkungan global. > (define size 6) > Ukuran variabel menunjukkan nilai 6. Nilai dari sebuah definisi kombinasi tidak berlaku- nilai tunggal dalam tipe Void. Bentuk dengan operator khusus yang disebut bentuk khusus. > Ukuran 6

> (* 2 size) 12 > (define a 3) > (+ A (* size 1,5)) 12 > (define result (+ a (* size 1,5))) > result 12 Lingkungan global: lingkungan global adalah fungsi dari himpunan berhingga variabel untuk nilai-nilai, yang melacak binding nama-nilai. Binding didefinisikan oleh mendefinisikan ditambahkan ke fungsi lingkungan global. Sepasang variabel-nilai disebut mengikat. Pemetaan lingkungan global dapat dilihat sebagai struktur data yang menyimpan binding. Karakter dalam nama variabel: Setiap karakter, kecuali ruang, tanda kurung, ",", "'", dan tidak ada "'" di awal. Nomor tidak bisa berfungsi sebagai variabel. Definisi ulang sederhana adalah praktik yang buruk, dan dilarang oleh sebagian besar bahasa aplikasi.

3. Bentuk Evaluasi Skema


Evaluasi ekspresi atom: Simbol operator khusus tidak dievaluasi. Variabel mengevaluasi nilai-nilai mereka dipetakan oleh peta lingkungan global (dari definisi form). Ekspresi sederhana mengevaluasi nilai-nilai mereka dinotasikan: - Nomor mengevaluasi nilai jumlah mereka; - The boolean ekspresi atom # t, # f mengevaluasi ke boolean nilai # t, # F, masing-masing; - Prosedur yang primitif mengevaluasi urutan instruksi mesin yang melakukan operasi dinotasikan. Kita mengatakan bahwa "primitif mengevaluasi diri mereka sendiri". Perhatikan status pemetaan lingkungan global dalam menentukan arti dari simbol atom. Lingkungan global dikonsultasikan terlebih dahulu. Terlepas dari sederhana dan simbol-simbol khusus, semua evaluasi tergantung lingkungan global. Evaluasi bentuk khusus - bentuk yang pertama ekspresi adalah operator khusus: bentuk khusus dievaluasi oleh aturan evaluasi khusus dari operator khusus mereka. Sebagai contoh: dalam menentukan bentuk ekspresi kedua tidak dievaluasi.

Evaluasi aturan adalah rekursif: > (* (+ 4 (+ 5 7)) (* 6 1 9)) 864 Perhatikan bahwa (5 * 9), (5 * 9) dan (tidak a b) adalah sintaksis bentuk Skema benar, tetapi evaluasi mereka gagal. Kita dapat memvisualisasikan proses evaluasi dengan menggambar pohon evaluasi, di mana setiap form diberikan sebuah simpul internal, yang keturunan langsung adalah operator dan operan formulir. Proses evaluasi dilakukan dari daun ke akar, di mana setiap bentuk simpul digantikan oleh nilai menerapkan anak operator untuk anak Operand:

4. Prosedur Pengguna Ditetapkan (prosedur senyawa)


Prosedur Konstruksi adalah suatu mekanisme abstrak yang memutar suatu operasi majemuk ke dalam sebuah unit tunggal. Suatu prosedur adalah suatu nilai seperti umumnya nilai lain. sebuah prosedur gabungan adalah suatu nilai, yang dibangun oleh operator khusus lamda pembangun nilaitipe prosedur. Asal nama lamda adalah di (dalam) kalkulus. Suatu prosedur dengan suatu parameter x dan badan(* x x) : > (lambda (x) (* x x)) #<procedure> Suatu prosedur campuran disebut penutup (closure). Prosedur yang diciptakan oleh evaluasi ini format lamda ditandai hClosure ( x)(* x x)i . Aplikasi dari prosedur ini: > ( (lambda (x) (* x x)) 5)

25 > ( (lambda (x) (* x x)) (+ 2 5) ) 49 Badan ungkapan lamda dapat mengandung banyak skema ungkapan, Tetapi inti dalam mencakup beberapa ungkapan di (dalam) badan, sejak nilai prosedur aplikasi adalah sebagai yang terakhir. Beberapa ungkapan dalam satu kelompok adalah bermanfaat ketika evaluasi mereka mempunyai efek samping. Penamaan prrosedur pengguna : suatu prosedur campuran memeriksa rekanan suatu nama dengan suatu nilai prosedur. Penamaan suatu prosedur gabungan adalah suatu alat abstrak yang mempertimbangkan berbagai aplikasi dari sebuah prosedur, yang digambarkan hanya sekali. Ini adalah suatu abstrak utama berarti: Nama Prosedur mewakili operasi prosedur. Suatu aplikasi eksplisit yang menggunakan prosedur tanpa nama: > ((lambda (x) (* x x)) 3) 9 > ( + ( (lambda (x) (* x x)) 3) ( (lambda (x) (* x x)) 4) ) 25 dapat diganti dengan.. > (define square (lambda (x) (* x x))) > (square 3) 9 > square #<procedure:square> > (define sum-of-squares (lambda (x y) (+ (square x) (square y )))) > ((sum-of-squares 3 4) 25

5. Pernyataan conditional
Perhitungan yang bercabang diperoleh dengan mengevaluasi ungkapan kondisi. Mereka dibentuk oleh dua operator khusus: cond dan if. Syntax dari bentuk cond : (cond (<p1> <e11> ... <e1k1>) (<p2> <e21> ... <e2k2>) ... (else <en1> ... <enkn>) ) Argumentasi cond adalah anak kalimat (< p> < e1> ...< en>),dimana < p> adalah suatu predication ( ungkapan boolean bernilai) dan < ei>s adalah skema ungkapan. Suatu predication adalah suatu ungkapan dimana nilai adalah benar. Operator suatu atau salah. Predikasi disebut sebagai predikat. Nilai yang salah diwakili oleh lambang # f, dan nilai benar diwakili oleh lambang # t. Syntax dari bentuk if : (if <predication> <consequent> <alternative>). If adalah suatu bentuk terbatas dari cond. Aturan evaluasi If : Jika < predication> adalah benar <akibat> dievaluasi dan yang dikembalikan sebagai nilai khusus. Cara lainnya, < alternatif> dievaluasi dan nilai nya dikembalikan sebagai nilai bentuk If.

B. Tipe tipe dalam Skema


Tipe adalah seperangkat nilai-nilai, dengan operasi terkait. Evaluasi ungkapan bahasa menghasilkan nilai dari jenis yang didukung oleh bahasa. Sementara istilah ekspresi, variabel, simbol, bentuk mengacu pada unsur-unsur dalam sintaks bahasa, nilai dihitung dengan proses evaluasi adalah bagian dari semantik bahasa.

Tipe sederhana adalah tipe yang sudah dibangun dalam bahasa. Artinya, bahasa dapat menghitung nilai-nilai mereka dan menyediakan operasi untuk beroperasi pada mereka. Semua jenis dalam Skema bagian yang kita pelajari adalah primitif. Jenis diklasifikasikan ke dalam jenis atom, yang nilai-nilainya adalah atom dan jenis komposit, yang nilai-nilainya terurai.

1. Tipe-tipe atomik
Nomor Tipe : Skema mendukung angka sebagai tipe primitif. Skema memungkinkan nomor ketik overloading: integer dan real ekspresi dapat dikombinasikan secara bebas dalam ekspresi Scheme. The Boolean : adalah 2 tipe yang telah di set bernilai # t, # f, dengan karakteristik (Mengidentifikasi) predikat boolean?, Kesetaraan predikat eq?, Dan hubungan boolean biasa (Dan, atau, tidak). Nilai-nilai dari tipe Boolean (semantik) yang sintaksis dinotasikan dengan 2 simbol Scheme: # t, # f. # T menunjukkan nilai t #, dan # f menunjukkan nilai # f. Tipe Simbol : Tipe Simbol meliputi simbol, yang merupakan nama variabel. Simbol ini adalah pendekatan Skema untuk mendukung informasi simbolis. Nilai-nilai dari tipe Symbol adalah nama atom, yaitu, (dipecahkan) urutan karakter keyboard (untuk membedakan dari tipe String). Nilai dari tipe Simbol diperkenalkan melalui operator khusus kutipan, yang dapat disingkat oleh karakter makro '. Tipe simbol berbeda dari tipe String: Nilai Simbol adalah nama dipecahkan. Nilai string adalah urutan pecah karakter.

2. Tipe Gabungan
Tipe gabungan adalah satu set yang dibangun dari jenis lain (set). Nilai-nilainya dapat didekomposisi menjadi nilai jenis lain. Sebagai contoh, Kompleks jenis nomor dibangun dari jenis nyata. Nilai-nilainya dapat didekomposisi menjadi mereka nyata dan Imajiner komponen. Jenis Prosedur dibangun dari jenis parameter dan jenis dari hasilnya.

3. Tipe Spesifikasi Bahasa


Untuk memungkinkan deklarasi eksplisit tipe ungkapan kita perlu tipe Spesifikasi Bahasa, yaitu bahasa untuk mendeskripsikan jenis.

Ada dua macam jenis: atom dan komposit. Jenis atom Nomor, Boolean dan Olahraga. Jenis komposit, untuk saat ini, adalah Prosedur, Tuple dan Union (Lebih banyak jenis komposit akan diperkenalkan di kemudian hari).

C. Desain program menggunakan kontrak


Sebuah langkah desain dimulai dengan kontrak yang meliputi : a. Tanda tangan b. Tujuan c. Jenis d. Contoh e. Pra-kondisi f. Post-kondisi g. Tes h. Invariants Tanda tangan, tujuan dan jenis yang wajib untuk semua prosedur. Contoh yang diinginkan. Tes yang wajib untuk prosedur yang kompleks. Pre / post-kondisi dan invariants relevan hanya jika non-trivial (tidak hampa).

1. Pendekatan Desain oleh Kontrak (DBC):


DBC adalah sebuah pendekatan untuk merancang perangkat lunak komputer. Pendekatan ini mengatur bahwa desainer perangkat lunak harus mendefinisikan tepat spesifikasi komponen untuk komponen perangkat lunak berbasis pada teori tipe data abstrak dan metafora konseptual kontrak bisnis. Pendekatan ini diperkenalkan oleh Bertrand Meyer sehubungan dengan desain dari obyek Eiffel bahasa pemrograman berorientasi dan dijelaskan dalam bukunya "Software Berorientasi Objek Konstruksi "(1988, 1997). DBC merupakan pendekatan yang menekankan nilai mengembangkan spesifikasi program yang bersama-sama dengan aktivitas pemrograman. Hasilnya adalah lebih dapat diandalkan, diuji, perangkat lunak didokumentasikan. Bahasa kontrak adalah bahasa untuk menentukan kendala. Biasanya, hal itu didasarkan pada Logic. Tidak ada standar, secara keseluruhan menerima kontrak bahasa: bahasa yang berbeda memiliki bahasa kontrak yang berbeda. Di Eiffel, kontrak merupakan bagian integral dari bahasa. Di kebanyakan bahasa lain, kontrak dijalankan oleh alat tambahan.
9

D. Prosedur dan Proses mereka Menghasilkan 1. Rekursi Linear dan Iterasi


Pertimbangkan perhitungan fungsi faktorial. Dalam bahasa imperatif, itu adalah alami untuk menggunakan looping yang membangun seperti saat, yang akan menambahkan perhitungan faktorial sampai jumlah yang diminta tercapai. Dalam Skema, faktorial dapat dihitung sebagai berikut dua definisi prosedur: a. Rekursif faktorial :

Setiap panggilan rekursif memiliki informasi sendiri untuk menjaga dan mengelola - masukan dan procedurecode evaluasi, tetapi juga informasi kembali ke prosedur menelepon, sehingga panggilan tersebut . Prosedur dapat melanjutkan perhitungan sendiri. Ruang yang diperlukan untuk evaluasi prosedur panggilan disebut bingkai. Oleh karena itu, pelaksanaan urutan seperti panggilan rekursif membutuhkan menjaga frame untuk semua aplikasi prosedur panggilan, yang tergantung pada nilai input. Perhitungan (faktorial 6) memerlukan menjaga 6 frame secara bersamaan membuka, karena setiap frame memanggil sedang menunggu disebut frame untuk menyelesaikan perhitungan yang dan memberikan hasilnya. b. Iterasi faktorial :
10

Artinya, faktorial berulang menghitung hasilnya menggunakan konstruksi perulangan: Pengulangan dari proses tetap, di mana pengulangan (disebut iterasi) bervariasi dengan mengubah nilai-nilai variabel. Biasanya ada juga sebuah variabel yang berfungsi sebagai variabel loop. Berbeda untuk proses evaluasi faktorial rekursif, evaluasi loop iterasi tidak tergantung pada yang berikutnya pengulangan: Setiap iterasi loop tangan-in variabel baru kepada manajer lingkaran (konstruk sementara), dan loop iterasi terakhir memberikan kembali hasil. Oleh karena itu, semua iterasi loop dapat dihitung dengan menggunakan ruang tetap, diperlukan untuk iterasi tunggal.

2. Pohon Rekursi
Pertimbangkan definisi prosedur berikut untuk menghitung elemen ke-n dalam urutan angka Fibonacci : FIB rekursif

Tanda tangan: ( fib n )

11

Tujuan : untuk menghitung angka Fibonacci n . Prosedur ini mengikuti aturan : fib ( 0 ) = 0 , fib ( 1 ) = 1 , fib ( n ) = fib ( n - 1 ) + fib ( n - 2 ) . Jenis: [ Nomor - > Number ] Contoh: ( fib 5 ) harus menghasilkan 5 Pre - kondisi : n > = 0 Post- kondisi : hasil = jumlah Fibonacci n . Pengujian : ( fib 3 ) == > 2 ( fib 1 ) == > 1

( mendefinisikan fib ( lambda ( n ) ( cond ( ( = n 0 ) 0 ) ( ( = n 1 ) 1 ) ( lain ( + ( fib ( - n 1 ) ) ( fib ( - n 2 ) ) ) ) ) ))

Proses evaluasi yang dihasilkan oleh prosedur ini memiliki struktur pohon , di mana bentuk bersarang terletak pada cabang yang sama :

+ ----------------- ( fib 5 ) ---------------- + || + ----- ( fib 4 ) --------- + + ----- ( fib 3 ) --------- + |||| + - ( fib 3 ) - + + - ( fib 2 ) - + + - ( fib 2 ) - + ( fib 1 ) ||||||| + - ( fib 2 ) - + ( fib 1 ) ( fib 1 ) ( fib 0 ) ( fib 1 ) ( fib 0 ) 1 ||||||| ( fib 1 ) ( fib 0 ) 1 1 0 1 0 10 Waktu yang dibutuhkan sebanding dengan ukuran pohon , karena evaluasi ( fib 5 ) menghendaki evaluasi segala bentuk fib . Oleh karena itu , waktu yang dibutuhkan adalah eksponensial pada input dari fib . Ruang yang diperlukan sebanding dengan kedalaman pohon , yaitu , linier dalam

12

3. Pesanan Pertumbuhan
Proses dievaluasi oleh jumlah sumber daya waktu dan ruang yang mereka butuhkan. Biasanya , jumlah sumber daya yang memerlukan proses diukur oleh beberapa unit yang disepakati . Untuk waktu , ini mungkin jumlah operasi mesin, atau jumlah putaran dalam beberapa lingkaran . Untuk ruang , mungkin jumlah register , atau jumlah sel di dalam mesin Turing melakukan proses. Sumber daya diukur dalam hal masalah ukuran , yaitu beberapa atribut dari masukan yang kita setuju untuk mengambil sebagai yang paling khas . Sumber daya yang direpresentasikan sebagai fungsi T ime ( n ) dan Space ( n ) , dimana n adalah masalah ukuran .

13

E. Prosedur High Order


Variabel memberikan abstraksi dari nilai-nilai . Prosedur memberikan abstraksi operasi senyawa pada nilai-nilai . Dalam bagian ini kami memperkenalkan : Prosedur high order : Prosedur yang memanipulasi prosedur . Ini adalah pengertian umum dalam matematika , di mana kita membahas gagasan seperti f ( x ) , tanpa menentukan fungsi f yang tepat . adalah contoh prosedur tatanan yang lebih tinggi . Hal ini memperkenalkan konsep penjumlahan , independen dari fungsi tertentu yang nilainya sedang dijumlahkan . Hal ini memungkinkan untuk diskusi sifat umum jumlah . Dalam pemrograman fungsional (maka , dalam Skema ) prosedur memiliki status kelas : 1 . Bisa diberi nama oleh variabel . 2 . Dapat dikirimkan sebagai argumen untuk prosedur . 3 . Dapat dikembalikan sebagai nilai-nilai prosedur . 4 . Dapat dimasukkan dalam struktur data.

1. Prosedur sebagai Parameter


Penjumlahan Pertimbangkan 3 prosedur berikut : a. penjumlahan bilangan bulat :

14

b. penjumlahan kubus :

di mana kubus didefinisikan oleh : ( define ( kubus x ) ( * xxx ) ) .

c.

pi -sum :

15

2. Membangun argumen prosedur pada saat run -time


Prosedur yang dibangun oleh nilai konstruktor dari tipe Prosedur : lambda . Evaluasi bentuk lambda menciptakan penutupan . bentuk lambda dapat dievaluasi selama perhitungan . Penutupan tersebut disebut prosedur anony - MoU , karena mereka tidak disebutkan . Prosedur Anonymous berguna setiap kali abstraksi prosedural tidak membenarkan yang bernama dan ditambahkan ke pemetaan lingkungan global . Sebagai contoh, dalam mendefinisikan prosedur pi -sum , prosedur ( lambda ( x ) ( / 1 ( * x ( x + 2 ) ) ) ) yang mendefinisikan bentuk umum dari istilah dalam urutan hanya berguna untuk perhitungan ini . Hal ini dapat dikirimkan secara langsung ke prosedur pi sum. Tubuh prosedur pi -sum mencakup dua prosedur anonim yang dibuat pada saat runtime , dan lulus sebagai argumen untuk prosedur sum. Harga elegan ini adalah bahwa prosedur anonim didefinisikan ulang di setiap aplikasi pi sum .

3. MendefinisikanVariabel Lokal - Menggunakan Singkatan let


Variabel lokal merupakan teknik pemrograman yang penting , yang memungkinkan deklarasi variabel dengan lingkup terbatas . Variabel tersebut digunakan untuk menyimpan perhitungan berulang . Dalam lingkup terbatas , variabel lokal dapat diinisialisasi dengan nilai dari beberapa perhitungan , dan kemudian diganti di mana pun perhitungan ini diperlukan . Dalam pemrograman imperatif variabel lokal juga digunakan untuk menyimpan nilai-nilai perubahan , seperti nilai-nilai yang diperlukan untuk loop pengelolaan . Variabel lokal dicirikan oleh :

1. Deklarasi dikombinasikan dengan lingkup terbatas , di mana variabel


tersebut diakui - daerah program yang terbatas , di mana kejadian variabel terikat pada deklarasi variabel . 2. Satu kali inisialisasi : Sebuah variabel lokal diinisialisasi dengan nilai yang dihitung hanya sekali . 3. Pergantian dari nilai inisialisasi untuk variabel kejadian dalam ruang lingkup. Dalam Skema , variabel dideklarasikan hanya dalam bentuk lambda dan dalam mendefinisikan bentuk . Oleh karena itu, bahasa inti yang disajikan sejauh ini tidak memiliki ketentuan untuk variabel lokal . Di bawah ini , kami menunjukkan bagaimana perilaku variabel lokal dapat diperoleh dengan generasi polos dan aplikasi langsung dari run time yang dihasilkan penutupan terhadap inisialisasi nilai . Kami kemudian menyajikan Skema gula sintaksis untuk nilai-nilai lokal - bentuk khusus biarkan . Operator khusus ini tidak membutuhkan evaluasi aturan khusus ( seperti mendefinisikan , lambda , jika , cond , quote ) karena itu hanya sintaksis gula untuk bentuk Skema polos .

16

Parameter , ruang lingkup , kejadian variabel terikat dan bebas : Suatu bentuk lambda termasuk parameter dan tubuh . Parameter bertindak sebagai deklarasi variabel dalam kebanyakan bahasa pemrograman . Mereka mengikat kejadian mereka dalam tubuh formulir, kecuali , ada bentuk lambda bersarang dengan parameter yang sama . Tubuh bentuk lambda adalah lingkup parameter dari bentuk lambda . Kejadian yang terikat oleh parameter terikat kejadian , dan orang-orang yang tidak terikat bebas. Misalnya, dalam definisi di atas tidak terpisahkan , dalam bentuk lambda :

4. Prosedur sebagai Nilai Kembali (return value)


Kemampuan untuk memiliki prosedur yang membuat prosedur memberikan ekspresi yang besar . Misalnya, dalam excel , pembuatan filter berdasarkan fungsi filtering berubah. Metode penanganan prosedur umum dapat diimplementasikan dengan prosedur yang menciptakan prosedur .

5. Prosedur yang Menyimpan Tertunda ( Future ) Perhitungan


Ingat perbedaan antara rekursif untuk proses berulang . Sebuah prosedur yang komputasi yang rekursif ditandai dengan penyimpanan ( frame dalam Prosedur - panggilan stack ) yang menyimpan perhitungan masa depan , setelah basis rekursi dihitung . Sebuah prosedur rekursif dapat berubah berulang dengan menggunakan prosedur urutan tinggi untuk menyimpan perhitungan tertunda . Prosedur ini dibuat pada saat run -time , ketika perhitungan yang diterapkan . Setiap prosedur sesuai dengan bingkai dalam Prosedur - panggilan stack . Dalam bab ini kita telah menunjukkan bagaimana Skema menangani beberapa fitur komputasi penting : 1. Melakukan perhitungan iterasi , tanpa kehilangan keuntungan dari iterasi . 2. Prosedur sebagai argumen untuk prosedur . Fitur ini memungkinkan perumusan gagasan abstrak esensial , seperti urutan penjumlahan , yang dapat lebih mendukung gagasan yang lebih abstrak . 3. Jalankan waktu dibuat prosedur ( prosedur anonim ) yang menyimpan populasi ruang nama dengan satu kali prosedur yang diperlukan . 4. Variabel lokal . 5. Prosedur yang membuat prosedur sebagai nilai mereka kembali .

17