Difference between revisions of "5 adımda Haskell"

From HaskellWiki
Jump to navigation Jump to search
(separate links to Books & Tutorials)
(Undid prev. change.)
Line 139: Line 139:
 
For a complete list of textbooks, references and tutorials:
 
For a complete list of textbooks, references and tutorials:
   
* [[Books]]
+
* [[Books and tutorials]]
* [[Tutorials]]
 
   
 
'''Cemiyetimize katılın!'''
 
'''Cemiyetimize katılın!'''

Revision as of 07:55, 9 December 2007

Haskell salt işlevsel ve genel maksatlı bir programlama dilidir. Bu sayfa size en hızlı şekilde Haskell'e başlamayı sağlayacaktır.

Haskell'i kurmak

Diğer programlama dillerin gibi, Haskell'in de iki tadı var: birisi, toplu işlemeye yönelik (derleyici), diğeri de etkileşimli (yorumlayıcı). Etkileşimli olan bir sistem size bir komut satırında ifadeler değerlendirme ve deney yapma olanağını sağlıyor, ondan dolayı bu tür bir sistem ile başlamayı tavsiye ederiz.

GHC Derleyici ve yorumlayıcı (GHCi) Muhtemelen en çok özellikleri içeren sistem
Hugs sadece yorumlayıcı GHC'den daha hafif ve başka platformlara daha kolay taşınabilir.

GHC ve Hugs ikisi de Windows'da da işliyor, ancak Hugs'ın o platform ile bütünleşmesi daha iyi. Mac OS X'de Haskell kurmak için ayrıntılı bilgi de mevcuttur.

Haskell'e başlamak

Bir terminali açınız. Eğer GHC'i kurduysanız, komut satırında ghci giriniz (GHC yorumlayıcı komutunun ismidir). Eğer Hugs'ı seçtiyseniz, hugs giriniz.

    $ ghci
       ___         ___ _
      / _ \ /\  /\/ __(_)
     / /_\// /_/ / /  | |      GHC Interactive, version 6.4, for Haskell 98.
    / /_\\/ __  / /___| |      http://www.haskell.org/ghc/
    \____/\/ /_/\____/|_|      Type :? for help.

    Loading package base-1.0 ... linking ... done.
    Prelude>

Kendinizi yeni bir istem (prompt) ile başbaşa bulacaksınız. Haskell sistemi şimdi hizmete hazır vaziyette sizden veri bekliyor.

İlk Haskell programınızı yazmak

Başka bir programlama dilinde program yazmayı öğrendiyseniz, ilk programınız muhtemelen "Hello, world!" olmuştur, madem aynısını yapalım:

Prelude> "Hello, World!"
"Hello, World!"

Haskell sistemi dizgiyi değerlendirdi, ve neticeyi yazdı. Farklı bir yöntem denemek için, doğrudan doğruya standart çıkışa (standard output) yazabiliriz.

Prelude> putStrLn "Hello World"
Hello World

Bir Haskell derleyicisi kullanarak, mesela GHC, bu kodu yürütülür hale derleyebilirsiniz. hello.hs adında yeni bir kaynak dosyası açıp içine bunu yazınız:

main = putStrLn "Hello, World!"

Bu komutla da derleyiniz:

    $ ghc -o hello hello.hs

Sonra yürütülür dosyayı çalıştırabilirsiniz (Unix sistemlerinde ./hello, Windows'da hello.exe):

    $ ./hello
    Hello, World!

Hesap makinası Haskell

Biraz eğlenelim. Haskell'de ilk gerçek programınız, faktöriyel fonksiyonu olacak. Yorumlayıcıya geri dönüp bu fonksiyonu tanımlayalım:

Prelude> let fac n = if n == 0 then 1 else n * fac (n-1)

Bu satır, fac adında yeni bir fonksiyonu tanımlar, bu fonksiyon da bir tüm sayının faktöriyelini hesaplar.

Şimdi de fac 'ı fonksiyonunu herhangi bir argüman (parametre) ile çağıralım:

Prelude> fac 42
1405006117752879898543142606244511569936384000000000

Tebrikler! Program yazmazı kolayladınız. Eğer Hugs kullaniyorsanız, you'll need to load the definition of fac tanımını bir dosyadan yüklemelisiniz. Mesela fac.hs adında bir dosya şu içeriği yazın:

fac n = if n == 0 then 1 else n * fac (n-1)

Sonra da Hugs ile çalıştırmak için (bu GHCi'de aynı şekilde yapılabilir):

Hugs.Base> :load fac.hs
Main> fac 42
1405006117752879898543142606244511569936384000000000

Yürütülür bir dosya üretmek için bu programı da derleyebiliriz, tabii. fac.hs dosyasına şu satırları yazalım (eğlenceyi arttırmak için zarif olan örüntü eşleştirme sözdizimini (pattern matching syntax) de kullanalım):

fac 0 = 1
fac n = n * fac (n-1)

main = print (fac 42)

sonra da bunu derleyip çalıştıralım:

    $ ghc -o fac fac.hs
    $ ./fac
    1405006117752879898543142606244511569936384000000000

Harika, değil mi?

Buradan devam etmek için

Haskell'i iyi anlatan kısa dersler (tutorials) ve kitapların sayısı çoktur (bu kaynaklar ingilizcedir). Tavsiye edebileceğimizlerin bir kaç tanesi:

Kısa Dersler

For a complete list of textbooks, references and tutorials:

Cemiyetimize katılın!

Haskell cemiyetinde başkalar ile temasa geçin, her soruya açığız:


Languages: en