Ana içeriğe geç

Haskell

Okunuşu
heskıl
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/haskell

Kısaca

Haskell, tembel değerlendirme kullanan, saf fonksiyonel ve statik tipli bir dildir; anlatımı güçlü tip sistemi ve matematiksel kesinlikteki koduyla bilinir.

Haskell nedir?

Haskell, bir araştırmacı komitesi tarafından tasarlanan ve ilk kez 1990'da tanımlanan, genel amaçlı ve saf fonksiyonel bir programlama dilidir. Adını mantıkçı Haskell Curry'den alır. Dil, Haskell 2010 raporunda standartlaştırılmıştır; uygulamada ise neredeyse tüm kod, birçok isteğe bağlı dil uzantısı ekleyen Glasgow Haskell Compiler'ı (GHC) hedefler.

Haskell'de fonksiyonlar varsayılan olarak saftır: bir fonksiyon, tipi IO tipi aracılığıyla izin vermedikçe değişkenleri değiştiremez ya da girdi ve çıktı işlemi yapamaz. Tembel değerlendirme kullanır; yani ifadeler yalnızca değerlerine gerçekten ihtiyaç duyulduğunda hesaplanır, bu da sonsuz listelerle çalışmak gibi zarif yöntemlere izin verir. Statik tip sistemi çoğu tipi otomatik çıkarır ve tipler arasında paylaşılan davranışı tanımlamak için, diğer dillerdeki arayüzlere benzer biçimde, Eq ve Show gibi tip sınıfları (type classes) kullanır.

Haskell; derleyicilerde ve programlama dili araştırmalarında, finansal sistemlerde, statik analiz araçlarında ve doğruluğun önemli olduğu arka uç servislerinde kullanılır. Bugün ana akım dillerde yaygın olan tip çıkarımı, örüntü eşleme, cebirsel veri tipleri ve eksik değerler için Option benzeri tipler gibi birçok fikir Haskell'de ve akrabalarında olgunlaştırıldı. Haskell yazmak sıkça matematiksel tanımlar yazmaya benzetilir: bir değerin ne olduğunu anlatırsınız, parçaların birbirine uyup uymadığını da derleyici denetler.

Haskell sıklıkla, güçlü tip çıkarımı olan statik tipli fonksiyonel diller olan F# ve OCaml ile kıyaslanır. Temel fark şudur: F# ve OCaml ifadeleri hevesle (eager) değerlendirir ve yan etkilere her yerde izin verir; Haskell ise varsayılan olarak tembeldir ve yan etkileri tip sisteminde izler, bu da onu daha katı ve öğrenmesi daha özgün kılar.

Önemli noktalar

  • Haskell saf fonksiyoneldir: yan etkiler, IO gibi tipler aracılığıyla tip sisteminde izlenir.
  • Tembel değerlendirme kullanır; değerleri yalnızca gerektiğinde hesaplar.
  • Statik tip sistemi çoğu tipi çıkarır ve paylaşılan davranış için tip sınıfları kullanır.
  • GHC, neredeyse tüm Haskell kodunda kullanılan derleyicidir.
  • Birçok modern dil özelliği Haskell'de ve akrabalarında olgunlaştırıldı.

Örnek

Haskell'de tipler, yüksek mertebeden fonksiyonlar ve tembellikhaskell
-- A type signature: takes a list of Ints, returns an Int
sumOfSquares :: [Int] -> Int
sumOfSquares xs = sum (map (^ 2) xs)

-- Lazy evaluation: an infinite list, only the needed part is computed
evens :: [Int]
evens = [0, 2 ..]

main :: IO ()
main = do
  print (sumOfSquares [1, 2, 3])  -- 14
  print (take 5 evens)            -- [0,2,4,6,8]

Sık sorulan sorular

Haskell neden saf fonksiyonel olarak adlandırılır?

Çünkü sıradan Haskell fonksiyonlarının yan etkisi olamaz. Dosya okumak ya da metin yazdırmak gibi eylemler, çalışma zamanının yürüttüğü IO tipinde değerlerdir; bu yüzden bir fonksiyonun tipi, dış dünyayı etkileyip etkileyemeyeceğini söyler.

Haskell sektörde kullanılıyor mu?

Evet, ancak niş bir tercihtir. Şirketler, güçlü doğruluk garantilerinin öğrenme eğrisine değdiği finansal sistemlerde, derleyicilerde, geliştirici araçlarında ve arka uç servislerinde onu kullanır.

Haskell'de monad nedir?

Monad, olası başarısızlık (Maybe), birden çok sonuç (listeler) ya da girdi ve çıktı (IO) gibi ek bağlam taşıyan hesaplamaları zincirlemek için kullanılan bir örüntüdür. Haskell'in do gösterimi, bu zincirleme adımları okunaklı, ardışık bir tarzda yazmak için bir sözdizimidir.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar