6 Mayıs 2009 Çarşamba

Geceyarısı Saçmalamaları - Forth ve REPL

Kuzux ile geceyarısı saçmalamaları(leyt nayt saçmalamacanları daha mı iyi olurdu acaba?) programına hoşgelmişsiniz. Bugünkü saçmalama fikrim, garip gurup stack-based programlama dili Forth ve geleneksel Lisp zıbıdığı REPL => Read Eval Print Loop. Şimdi bu ikisinin ne alakası var dersek, Forth da gayet interpreted bir dil olarak REPL yapılabilen bir şey. Hatta closure destekleyen ve read, eval, print ve loop fonksiyonları bu isimle tanımlı olan bir forth diyalekti alırsak(standart forth'ta closure yok, "parsing mode" tarzı bir kavram var, closurelar olsa çok daha iyi olurdu. read, eval, print ve loop fonksiyonlarını da daha başka süper isimlerle tanımlayabiliriz. mesela bunlar sırayla input, exec, out, repeat olabilir) REPL'yi şöyle bir kodla elde edebiliriz;

[read eval print] loop

Tam süper oldu, ancak biraz fazla saçma gibi. Açıklamak gerekirse; read burada input alıyor, aldığı inputu stack'e push ediyor. Eval bu stackin tepesindeki kodu pop ediyor, evaluate edip sonucunu stack'e push ediyor. print ise stack'in tepesindeki elemanı pop ve print ediyor. loop da stack'in tepesinde bir closure alıp(closure umuz köşeli parantezlerle delimit ediliyor farzedelim) onu sonsuza dek döndürüyor. Ne güzel?
Bir ekstrem saçmalama seansının daha sonuna gelmiş bulunmaktayız, esen kalın

Hiç yorum yok:

Yorum Gönder