Piyasada kullanılmaz desem de işte bir mario oyunundaki kullanımı :
,
Öncelikle sadece Haskell için değil bütün programlama dillerinde program yazabilmemiz için ihtiyacımız olan en temel 2 şey vardır : metin düzenleyici ve derleyiciler(compiler).Ben Notepad++ 'ı kullanıyorum metin düzenleyici olarak..Her programlama dilinin kendine has bir compiler'ı vardır.Haskell için olan compiler'ı (GHC) Buradan indirebilirsiniz.
Haskell'in yüklenip yüklenmediğini terminali açıp 'ghci' komudunu yazarak öğrenebiliriz.Başarıyla prelude> komut beklemeye başladıysa herşey tamamdır.Hata alıyorsak bir daha yüklemeyi deneyebiliriz.
Windows 7'de terminali arama bölümüne cmd yazarak,Linux'da ise Accessories başlığı altında bulabiliriz.
Derleyicimizi şimdi test etmeye başlayabiliriz :
C:\Users\user>ghciGördüğümüz gibi başarılı bir girişin ardından normal işlemlerimizi compiler'a yaptırmaya başladık.1+1'i bize 2 olarak döndü sorun yok gibi gözüküyor.Ancak farkettiyseniz true&&false 'da hata verdi.Çünkü :
GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> 1+1
2
Prelude> 3*2
6
Prelude> true&&false
<interactive>:1:1: Not in scope: `true'
<interactive>:1:7: Not in scope: `false'
Prelude> True&&False
False
Prelude>
Haskell'de fonksiyon ve değişken isimleri küçük ve büyük harfe duyarlıdır.Ayrıca bir fonksiyon ismi büyük harfle başlayamaz.
Fonksiyonları görmedik daha ama ön bilgi olarak kalsın :)
Haskell'de genel olarak fonksiyonlarımızı tanımlamak için .hs uzantılı dosyalara fonksiyonlarımızın taslağını yazarız.Mesela benim deneme.hs dosyamda şunlar var:
ikiyekatla x = x + xDemek oluyorki bizim fonksiyonumuz bir x alacak ve bu x'i ikiye katlayacak.Fonksiyon tanımlaması C ailesine göre değişik.Öncelikle parantez olayı yok fonksiyon tanımlarken.Sona noktalı virgül de yok.Fonksiyonun döneceği değeri eşitlediğimiz bir takım işlemler var.Eşitliğin sol tarafı girdiler sağ tarafı da fonksiyonun döndüğü değer diyebiliriz.Şimdi biz bu fonksiyonu deneme.hs'de yazdık.Ancak compiler'da nasıl bağlayacağız?:
Prelude> :l denemeGörüldüğü üzere tanımladığımız fonksiyonun dosyasını compiler'a bağlamak için dosyanın .hs uzantısız haliyle :l nin yanına yazıyoruz.Eğer bir hata varsa bize söyler ,yoksa *Main> der ve bizden girdi bekler.Girdi olarak da ikiyekatla 2 dedim gördüğünüz gibi parantez yok tamamen serbest ve bize 4 döndü.Tabiiki dosyanın en yukarıda görüldüğü gibi user klasörünün içinde olması gerekiyor.Eğer değilse çıkın ve ghci yapmadan önce "cd dosyanın bulunduğu konumu yazın" mesela cd Desktop gibi.
[1 of 1] Compiling Main ( deneme.hs, interpreted )
Ok, modules loaded: Main.
*Main> ikiyekatla 2 4
Önceden de dediğimiz gibi fonksiyonların isimleri büyük harfle başlamaz ancak içinde ' karakteri olabilir.Haskell kendine özel bazı tanımlanmış fonksiyonlara sahiptir.mesela max 3 4 bize 4 döner.min 2 3 bize 2 döner.succ 2 bize 3 döner (yani bir sonraki sayı) böyle değişik kendiliğinden tanımlı fonksiyonlar var onları yeri geldiğinde söyleyeceğiz ancak burada da gördüğünüz üzere fonksiyona verilen girdilerde hiç parantez kullanmadık.Şimdi biraz daha genişletilmiş bir örneğe bakalım :
kucugukatla x y = if x > y then x*x else y*ydeneme.hs dosyasına bunu yazdıktan sonra bu fonksiyonu okuması için terminale yeniden :l deneme yada :r yazacağız. Gördüğünüz gibi fonksiyonumuz iki tane girdi alıyor x ve y, x y'den büyükse x'i aksi takdirde y'yi ikiye katlıyor.burada if kullanımını da görmüş olduk.parantez olayı olmadığından bi alt satıra geçelim derdi de yok :)
Hiç yorum yok:
Yorum Gönder