SORU
18 Mayıs 2014, Pazar


Hangi bölümleri Real World Haskell şimdi gereksiz veya kötü uygulama olarak kabul edilir?

Bölüm 19Real World Haskellörnekler çok şimdi Control.Exception değişikliği nedeniyle başarısız.

Bu benim belki de bu kitapta bazı şeyler aslında eskimiş ve artık incelemeye değer değil, 6 yıl oldu sonuçta düşündürüyor. Sadece benim diğer referanstırSen bir Öğren Büyük Bir İyilik İçin Haskellharika bir kitap olsa da, RWH ile karşılaştırıldığında çok daha basit.

Lütfen önce kitabı okuyan herkes hangi bölümü artık uygun olmayan bir tavsiyede bulunabilir mi? Kitap özellikle, örneğin, ikinci yarısında bölümlerde yazılım işlem bellek, eşzamanlı programlama, soket programlama, vb.

CEVAP
19 Mayıs 2014, PAZARTESİ


RWH ana sorun

Eski.RWH DZD 6.8 kullanıldığı zaman bir versiyonu yazılmıştır. 6.8 3.0 tabanı sürüm kullanılır.x.x. 6.10.1 zaten many changes piyasaya 4.0.0.0, kullanılan. Ve o 6.10 6.8 sadece atlama. DZD geçerli sürüm 7.10. Monadlar değiştirildi. Şu anda bir tartışma var to remove return from Monad, Haskell gerçekten senkronize olacak gerçek dünya ile Gerçek Dünya Monad örneği yok.

Bu söyleniyor, hala genel kurallar için yararlı bir kaynak olduğunu söyledi. Ama birçok kütüphane çıkışından bu yana değişti unutmayın.

Genel açıklamalar

  • Yorumları okudum. Genellikle verilen paragraf/bölümü hala alakalı ve/veya çalışıp çalışmadığını bilgiler içerir.
  • Kitaplıkları belgeleri kullanmak istediğiniz fonksiyonları/okuyun. Eğer tembel değilsen bile, en azından çeşitlerini bilir.

Bölüm için açıklamalar

Bu sadece RWH okurken fark ettim ki bazı şeyleri hızlı bir bakış. Muhtemelen eksik.

Bölüm 14. Monadlar & Bölüm 15. Monadlar ile programlama

Şifre: Applicative m => Monad m

DZD olarak 7.10, Applicative Monad 2007 yılında planlı olmayan bir şeyin bir üst sınıftır.

DZD içinde 7.10, Applicative kullanıcı kodu bir sürü kırma potansiyel Monad, bir üst sınıf olacak. Bu geçişi kolaylaştırmak için, DZD şimdi tanımları Uygulamalı-Monad Önerisi (AMP) ile çalıştığında uyarı oluşturur.

7.8.1 release notes bkz.

State/Writer/Reader Bu monadlar

Will the real state monad please stand up? bölümünde, yazarlar iddia ediyor

Monad bir örneği tanımlamak için (>>=) return için uygun bir tür kurucu olarak tanımlar sağlamak zorundayız. Bu State gerçek tanımı götürür bizi.

-- file: ch14/State.hs
newtype State s a = State
    runState :: s -> (a, s)
}

State ve şimdi arkadaş aracılığıyla uygulanır çünkü artık doğru

type State  s = StateT  s Identity
type Writer w = WriterT w Identity
type Reader r = ReaderT r Identity

Monad kendi trafo tarafından tanımlanmışlar.

Chapter 17. Interfacing with C: the FFI

Genel bölüm iyi, ama bir Yuras Shumovich's blog aşağıdaki kodu sonlandırıcı iş parçası üzerinde yorum ya da okuma gibi kötü bir uygulamadır:

pcre_ptr <- c_pcre_compile pattern (combineOptions flags) errptr erroffset nullPtr
if pcre_ptr == nullPtr
    then do
        err <- peekCString =<< peek errptr
        return (Left err)
    else do
        reg <- newForeignPtr finalizerFree pcre_ptr -- release with free()
        return (Right (Regex reg str))

malloc() free(), new delete, allocate deallocate ile birlikte kullanılmalıdır her zaman olduğu gibi, doğru işlevini kullanmanız gerekir.

TL;her zaman sizin için ayrılmış olan aynı ayırıcısı ile bellek boşaltmanız DR.

Eğer yabancı bir işlevi bellek ayırır, ayrıca eşlik eden kaldırma işlevini kullanmanız gerekir.

Chapter 19. Error handling

Hata işleme tamamen 6.10, ama sen bunu zaten fark 6.8 olarak değiştirildi. İyi okuyun documentation.

Chapter 22. Extended Example: Web Client Programming

Örneği biraz kırılmış gibi görünüyor. Ayrıca, diğer HTTP kütüphaneler vardır.

Chapter 25. Profiling and optimization

Genel profil oluşturma teknikleri hala aynı, ve örneğin (aşağıya bakınız) programınızda oluşabilecek sorunlar için büyük bir vaka çalışması. Ama RWH çok kanallı profil, örneğin ThreadScope üzerinden eksik. Ayrıca, tembel IO bütün kitap boyunca ilgili, bildiğim kadarıyla değil.

mean :: [Double] -> Double
mean xs = sum xs / fromIntegral (length xs)

Bölüm 24 & Bölüm 28 (Eşzamanlı ve paralel programlama & STM)

Chapter 24. Concurrent and multicore programming Chapter 28. Software transactional memory hala konuşuluyor olsa da, Simon Marlow kitabı Parallel and Concurrent Programming in Haskell sadece eşzamanlı ve paralel programlama üzerinde duruluyor ve güzel bir son (2013). GPU programlama ve repa tamamen RWH eksik.

Chapter 26. Advanced library design: building a Bloom filter

Diğer bölümlerde olduğu gibi, tasarım Kütüphanesi genel kurallar hala iyi yazılmış ve ilgili. Ancak, bazı değişiklikler nedeniyle (?) ST sonuç konusunda artık derlenemez.

Bölüm 27. Ağ programlama

Güncel hala çoğunlukla. Sonuçta, ağ programlama bu kadar kolay değişmez. Bununla birlikte, kodu kaldırılmış fonksiyonları bindSocket bind close (tercihen nitelikli ithalat) tarafından değiştirilmesi gereken, sClose kullanır. Daha özel yüksek düzey bir kütüphane kullanmak isteyebilirsiniz düşük seviyeli, çok unutmayın.

İçerik eksik

Bazı konular RWH hiç söz konusu olmaz. Bu pipes conduit ve ayrıca lenses gibi akışı kitaplıkları içerir.

Çeşitli kaynaklar bu konular için vardır, ama ne oldukları hakkında bir fikir vermek için tanıtımları için bazı bağlantılar. Eğer vektörleri kullanmak istiyorsanız Ayrıca,, vectors paketini kullanın.

Control.Applicative

RWH Control.Applicative'39 *s* birkaç noktada, ama hiç Control.Applicative açıklamıyor. LYAH Typeclassopedia Applicative bölümler. Applicative Monad (bakınız) bir üst sınıf olduğu göz önüne alındığında, kalp ile o dersi öğrenmek için tavsiye edilir.

Ayrıca, birkaç operatörleri Control.Applicative (ve typeclass kendisi) şimdi bölümü Prelude, emin olun operatörler değil çatışma ile <$>, <*> ve diğerleri.

Lensler

Kütüphaneler izle

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Sergio Lafuente Rubio

    Sergio Lafue

    11 Aralık 2008
  • Techmoan

    Techmoan

    31 Mayıs 2009
  • Truc Minh

    Truc Minh

    23 Ocak 2011