You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

16 KiB

Nasıl Haskell Öğrenirim - Kılavuz

Başkalarına yardım ederek deneyimlenmiş, Haskell öğrenmek için önerilen yöntemdir. Haskell Book kitabının yazarlarından birine ait önerilerin listesidir.

Türkçe Bilmeyenler İçin

Anlamadığın şeyleri hemen başına dert etme. Devam et!

Topluluk

İnternet söyleşi kanalımıza Freenode üzerinden #haskell-beginners etiketi ile ulaşabilirsiniz.

İnternet söyleşi kanalımızın ağ istemcisi için.

Haskell e-posta listesi.

Topluluk Kuralları

Chris Done'ın eğitim hakkındaki gönderisine göz atın

Nazik ve kibar olun. Kabalık ve edepsizlik insanları korkutur ve onları iletişime katkı yapmalarını engeller.

Yapıcı olmayan eleştiriler sadece söyleyene yarar sağlar, dinleyene değil.

Olayları "çok basit" veya "önemsiz" olarak nitelendirmeyin. Bu şekilde insanlar sıkı çalışmaları gerektiğinde kötü hissederler. Yavaş öğrenen kişiler genellikle titizlerdir ve bu övülmesi gereken bir şeydir!

Şaşırmış gibi yapmayın. Birisi size bir şeyi bilmediğini söylediğinde şaşırmış numarası yapmayın. Bu durumda karşınızdaki berbat hisseder ve siz de kendinizi uyanık hissetmekten başka hiçbir şey elde etmezsiniz.

"Aslında..." cümlesini kurmayın. Biri, çoğunluğu doğru olan - fakat tamamı değil - bir şey söylediğinde, siz de, "Aslında…" diyip küçük bir düzeltme yaparsınız. Bu özellikle yapılan düzeltme ana konuyla alakasız bir şey olduğu zaman irite edici olabilir. Ayrıca bu durum #haskell-beginners kanalının doğruluğa ve kusursuz olmaya önem vermeyen bir kanal olduğu anlamına gelmez. "Aslında ..." diye başlayan cümlelerin çoğu gösterişle alakalıdır, doğruluğa ulaşmakla alakalı değildir.

Üzerinize vazife olmayan konularda akıl vermeyin. Bir problemi çözmeye çalışan kişiler gördüğünüzde hemen araya kendi tavsiyelerinizi sıkıştırmaya çalışmayın. Biri yardım isteyene kadar onları çalışmalarıyla başbaşa bırakın. Birbirinin sözünü kesmeden konuşmak #haskell-beginners kanalının kuruluş amaçlarından biridir.

Irkçılık, seksistlik, homofobi, transfobi, veya herhangi bir önyargı ya da nefret söylemi hoş karşılanmayacak ve kesinlikle müsamaha gösterilmeyecektir.


İlkeler Recurse Center 'ın yayınladığı kılavuzdan alınmıştır. Recurse Center'a yayınladığı için teşekkürler!

What are Haskell, GHC, and Cabal?

Haskell raporlarda belirtildiği üzere bir programlama dilidir, son sürümü 2010 yılında çıkmıştır. Rapora buradan ulaşabilirsiniz.

GHC

GHC , Haskell çalışmak için en yaygın yoldur. Derleyicinin yanında, REPL (yorumlayıcı - "interpreter"), paket yöneticisi, ve diğer yararlı şeyleri kapsar.

Cabal

Cabal proje yönetimini ve bağımlılık çözümünü yapar. Cabal ile projeleri oluşturabilir ve genellikle kendi yalıtılmış ortamına ("sandbox") indirebilirsiniz.

Cabal Ruby'deki Bundler, Python'daki pip, Node'daki NPM ve Maven'e eş değerdir. GHC paketleri yönetir, Cabal hangi sürümlerin kurulacağına karar verir.

Haskell Kurulum Rehberi

Haskell'e başlamak için Stack kullanın

GHC indirmek ve projelerinizi oluşturmak için Stack'ı edinin .

Eğer Stack hakkında hiçbir bilginiz yoksa ve genel bir tanıtıma ihtiyacınız varsa, kapsamlı Stack video eğitimine buradan ulaşabilirsiniz.

HASKELL PLATFORM İNDİRMEYİN

Haskell.org'da bulunan yönergeyi izlemek yerine Stack edinin.

Neden Haskell Platform kullanmıyoruz?

https://mail.haskell.org/pipermail/haskell-community/2015-September/000014.html

Aşağıdaki yönergeler artık kullanılmamaktadır

Aşağıdaki yönergeleri izlemek yerine Stack edinmenizi öneriyoruz, fakat asgari düzeyde kurulum yapmak isteyenler için yönergeler muhafaza edilmektedir.

GHC & Cabal Kurulumu

Ubuntu

Bu arşiv (PPA) mükemmel ve tüm Linux makinelerimde bunu kullanıyorum.

Yani:

$ sudo apt-get update
$ sudo apt-get install python-software-properties # v12.04 and below
$ sudo apt-get install software-properties-common # v12.10 and above
$ sudo add-apt-repository -y ppa:hvr/ghc
$ sudo apt-get update
$ sudo apt-get install cabal-install-1.24 ghc-7.10.3 happy-1.19.5 alex-3.1.4

Ardından aşağıdakini $PATH değişkeninize ekleyin (bash_profile, zshrc, bashrc, etc):

export PATH=~/.cabal/bin:/opt/cabal/1.24/bin:/opt/ghc/7.10.3/bin:/opt/happy/1.19.5/bin:/opt/alex/3.1.4/bin:$PATH

Opsiyonel: Path değişkeninize .cabal-sandbox/bin de ekleyebilirsiniz. Geliştirdiğiniz koda komut satırından erişebilirsiniz. Bu sadece şu anda çalıştığınız dizin Cabal sandbox ise çalışır.

Debian

Ubuntu PPA kullanarak

Eğer stabil sürümü kullanmıyorsanız, Ubuntu'daki adımları olduğu gibi yapabilirsiniz, fakat ekstradan bir komut daha çalıştırmanız gerekecek. sudo add-apt-repository -y ppa:hvr/ghc çalıştırıldıktan hemen sonra aşağıdaki kodu çalıştırın:

$ sudo sed -i s/jessie/trusty/g /etc/apt/sources.list.d/hvr-ghc-jessie.list

Diğer Debian sürümleri için, yukarda gördüğünüz komuttaki bütün jessie'leri kendi sürümünüzün adıyla değiştirin.

Herhangi bir sebepten ötürü, /etc/apt/sources.list.d/hvr-ghc-jessie.list dosyası yoksa, /etc/apt/sources.list dosyası aşağıdaki gibi bir satır içermelidir:

deb http://ppa.launchpad.net/hvr/ghc/ubuntu jessie main

Bu satırda jessie yerine trusty yazın.

Manuel compilation

Mac OS X için yazılmış olan buradaki kılavuzu kullanabilirsiniz:

Not:

  • GHC'yi yapılandırırken ön eklerinizi (prefix) de düzenleyin.
  • cabal-install dosyası yerine, kaynağı indirin ve bootstrap.sh komut dizisini çalıştırın.

Fedora 21

Haskell 7.8.4 sürümünü resmi olmayan repodan kurmak istiyorsanız (Fedora 22+ resmi sürümü içerir):

$ sudo yum-config-manager --add-repo \
> https://copr.fedoraproject.org/coprs/petersen/ghc-7.8.4/repo/fedora-21/petersen-ghc-7.8.4-fedora-21.repo
$ sudo yum install ghc cabal-install

petersen/ghc-7.8.4 copr page 'de bahsedildiği gibi bu ghc, Fedora/EPEL ghc ile birlikte kurulamaz.

Arch Linux

Haskell'i Arch Linux'ün resmi reposundan indirip kurmak için aşağıdaki komutu çalıştırın:

$ sudo pacman -S cabal-install ghc happy alex haddock

Gentoo

Gentoo'da, Haskell Platform'un parçalarını Portage aracılığı ile ayrı ayrı kurabilirsiniz. Eğer ACCEPT_KEYWORDS=arch kullanırsanız ( ACCEPT_KEYWORDS=~arch yerine) Portage, Haskell'deki eski bazı şeyleri de kuracaktır. Bunu göz önünde bulundurarak, sadece ve sadece ACCEPT_KEYWORDS=arch kullanacaksanız, aşağıdaki satırları /etc/portage/package.keywords dosyasına ekleyin.

dev-haskell/cabal-install
dev-lang/ghc

Bunu tamamladıktan sonra aşağıdaki komutları çalıştırın:

$ emerge -jav dev-lang/ghc dev-haskell/cabal-install

Gentoo cabal-install'ın "stabil" (diğer bir tabirle: eski) bir sürümünü Portage ağacında tutar. Eğer cabal-install'ın daha yeni bir sürümü kullanmak istiyorsanız aşağıdaki komutları çalıştırın. Burada "" işaretlerinin gerekli olduğuna dikkat edin.

$ \cabal update                # Ters eğik çizgiler
$ \cabal install cabal-install #     gereklidir.

Şu anda Cabal'ı Portage kullanarak global şekilde ve cabal-install kullanarak ana dizininize kurdunuz. Sonraki adım terminalde cabal çalıştırdığınızda shell'in ana dizininizdeki güncel sürümü çalıştırdığından emin olmak Bunu da aşağıdaki satırları shell'in konfigürasyon dosyası ekleyerek yapabilirsiniz:

PATH=$PATH:$HOME/.cabal/bin
alias cabal="$HOME/.cabal/bin/cabal"

Shell'in ne olduğunu bilmiyorsanız, büyük bir ihtimalle,shell Bash olarak geçmektedir. Eğer Bash kullanıyorsanız, düzenleyeceğiniz dosya ~/.bashrc olmalı. Eğer Z-shell kullanıyorsanız, dosyanın ismi ~/.zshrc. Kullandığınız shell'in ne olduğunu öğrenmek için aşağıdaki komutları çalıştırabilirsiniz.

echo $SHELL | xargs basename

Örneğin ben zsh kullanıyorum, bu yüzden komutu çalıştırdığımda zsh yanıtını aldım.

Bunların hepsini yaptıktan sonra, ek araçlar olarak alex ve happy kurun. Bunun için:

$ cabal install alex happy

Tebrikler! Şu anda çalışan bir Haskell kurulumuna sahipsin!

Mac OS X

10.9

GHC ve Cabal içeren GHC for Mac OS X uygulamasını kurun. Uygulamada, .app dosyasını bir yere koyduktan sonra GHC ve Cabal'ı path değişkenine nasıl ekleyeceğinizi anlatan yönergeleri de bulabilirsiniz.

10.6-10.8

Buradaki tar dosyasını indirip kurulumu gerçekleştirin.

Windows

  • Minimum GHC Installer network kütüphanesini ve diğer kütüphaneleri derleyebilmektedir. Minimal GHC ortamının ("environment") yanında Cabal ve MSYS'yi ( network gibi kütüphaneleri indirmenize yarayan derleyici ortamı) de içerir.

minghc web sayfasında birkaç detaya rastlayabilirsiniz, fakat normal olanın tüm sistem dizini yerine sadece local AppData dizinine kurmanız olduğunu unutmayın. (C:\Users<kullaniciadi>\AppData\Local\Programs)

Diğer Linux Kullanıcıları

Cabal and ghc'nin son sürümlerini aşağıdaki linklerden indirebilirsiniz:

Diğer Unix-benzeri Sistem Kullanıcıları

Paket yükleyicinizden GHC ve Cabal'i indirip kurun, sonra $PATH değişkeninize ~/.cabal/bin dizinini atayın. Son olarak cabal'ı güncelleyin ve alex ve happy'i kurun.

$ cabal update
$ cabal install cabal-install alex happy

Nasıl Haskell öğrenmeliyim?

Ana tavsiyemiz, cis1940 kursunun Bahar'13 versiyonundaki ve İşlevsel Programlama kursundaki dersleri okumanız ve tüm alıştırma/ödevleri tamamlamanızdır. İkisini de aşağıda bulabilirsiniz. Bunlar dışındaki her şey opsiyoneldir ve size nereye bakmanız gerektiğiyle ilgili fikir vermek için bahsedilmiştir.

"Haskell Programming from First Principles" - Kitap.

@dmvianna size tavsiye edilen kaynaklardan sadece ücretsiz olanlarının aşağıda olduğunu hatırlatmamı istedi. Eğer bir kitap incelemek istiyorsanız, kendimize ait Haskell Book! kitabını içtenlikle öneririz. Herhangi bir sebepten ötürü kitabın ücretini karşılayamıyorsanız, lütfen destek sayfamızdaki iletişim bilgilerini kullanarak bize mail atın.

"Haskell Book" Kitabı burada önerilen birincil kaynakların hepsini içerir.

Yorgey'in cis1940 kursu

Bununla başlayın; Eğer "Haskell Book" kitabını almayı düşünmüyorsanız bu kurs Haskell'e giriş için en iyi ücretsiz kaynak.

Çevrimiçi erişim.

Brent Yorgey'in kursu şu ana kadar bulabildiğim en iyi kurs. Bu kurs sadece Haskell yazmayı öğretmekle kalmayıp üstüne "Parser Combinator"ler hakkında bilgi sahibi olmanızı sağladığından dolayı çok değerli bir kaynak. Eğer bilgisayar programcısı değilseniz veya yeterince deneyminiz yoksa cis1940 kursuyla başlamanızı tavsiye etmiyoruz. Bu durumda Simon Thompson'ın kitabıyla başlayıp daha sonra cis1940 kursuna geçin.


İşlevsel Programlama Kursu

Bu kursu Yorgey'in cis1940 kursunu tamamladıktan sonra öneriyoruz.

Kursa github üzerinden erişmek için tıklayınız.

Bu kurs cis1940 kursunda bahsedilen kavramları uygulayarak size deneyim katacak ve Haskell'deki Functor/Applicative/Monad/vb. kavramlarını rahatça kullanmanıza kritik düzeyde katkı sağlayacak bir kurs. cis1940 ve ardından İşlevsel Programlama kursunu tamamlamak benim tavsiyelerimin özünü oluşturuyor ve biz herkese Haskell'i bu şekilde öğretiyoruz.


Tamamlayıcı Kurs - cis1940 ve İşlevsel Programlama kursundan sonra

Orta seviye konularda daha fazla materyal içerir

cs240h kursuna çevrimiçi olarak aşağıdaki linklerden erişebilirsiniz:

Bu kurs Bryan O'Sullivan 'ın Standford'da verdiği derslerin online derlenmiş hali. Eğer kendisinin kim olduğunu bilmiyorsanız, herhangi bir Haskell uygulamasının kütüphanelerine göz atın. En az yarısında ismine rastlayacaksınızdır. Eğer Yorgey'in kursunu tamamladıysanız phantom types, bilgi akışı kontrolü, dil eklentileri, concurrency, pipes, ve lenses hakkındaki modüller ilginizi çekebilir.


Haskell'deki Belirli Konular için Kaynaklar

Bu kaynaklar cis1940 and IP kurslarının aksine test edilmemiştir, yine de konu listesi'den nereden başlamanız gerektiğine dair bilgi alabilirsiniz. Belgede orta/ileri düzeydeki konseptleri ve "işleme" ve "metin editörleri" gibi konuları bulabilirsiniz.

Araçlar

Eğer acemiyseniz ghc-mod indirmeyin ve kullanmaya çalışmayın

Biraz kırılgan ve daha yavaştır, çaba sarfetmeye değmez.

Text Editors

autocmd FileType haskell setlocal makeprg=stack\ build
autocmd FileType haskell setlocal errorformat=%f:%l:%v:%m

Other

  • Haskell For Mac

Diyaloglar

Burada muhafaza edilmektedir.

Bu diyaloglar aslında çok önemli ve öğreticidir. Birçok konuda derin sohbetler için buraya bakabilirsiniz.