RSS

Haskell ile küçük adımlar

13 Feb

Uzun zamandır merak ettiğim fonksiyonel programlama dillerinden biri olan Haskell ile nihayet biraz ilgilenebilme fırsatı bulabildim. Evdeki Debian GNU/Linux sistemime gerekli Haskell derleyicisini, kütüphanelerini ve Emacs için haskell-mode’u kurduktan sonra ufaktan Haskell wikibook‘tan çalışmaya başladım ve Beginner’s Track olarak tarif edilen izleğin Practical Monads isimli son bölümüne kadar geldim. Tabii geleneğe uygun olarak monadların derinliklerine girmeden önce püskürtülmeyi ve tokatlanmayı peşinen kabul ettim 😉 Yine de son kısımdaki çok basit, pratik Lisp “parser” örneği Haskell’in gücüne dair bir şeyler anlatıyor gibi. Bunun üzerine bir kat daha boya çekmek için YAHT‘a başladım ve onun da Type basics bölümüne kadar gelebildim. Bundaki egzersizleri yapıp sonra üstüne son bir kat cilayı A Gentle Introduction To Haskell ile çekip sonra Haskell ile belki bir şeyler yapmaya girişebilirim. (Ya da şimdiye kadar gördüğüm en çıkıntı “tutorial”lardan biri olan Write Yourself a Scheme in 48 Hours ile biraz antrenman yaparım.)

Şimdiye dek önceki Scheme ve Common Lisp deneyimimin Haskell çalışmada bana bazı açılardan faydası oldu, en azından fonksiyonel programlamanın bazı temel nosyonlarına yabancı olmamak (“değişken”lerin değişmemesi gibi, üst dereceden fonksiyonlar, map türü yapılar, vs.) yahut verilen “parser” örneklerinde yabancılık çekmemek gibi. Diğer yandan önceki Prolog bilgim de Haskell’deki liste notasyonunu anlamamda kolaylık sağladı.

Tüm bunlardan sonra, şimdiye dek geldiğim noktaya bakarak, defmacro’nun The Ducati Of Programming Languages yazısında ne kast ettiğini ve neden o tür bir kıyaslama yaptığını daha iyi anlıyorum. Bu arada bakalım bir yandan Common Lisp ile “window manager” programlama dünyasına damardan giriş yapan opheus‘un Haskell deneyimleri nasıl ilerleyecek 😉

Advertisements
 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: