Haskell Book 這本書怎麼樣?

http://haskellbook.com


從我的觀察Christopher Allen在社區裡面是說話有點火爆(?)的人

overview for Mob_Of_One

他寫的這個學習Haskell的指引bitemyapp/learnhaskell · GitHub 可以算是入門現代Haskell的最好材料了

曾經讀過他的兩篇Blog印象比較深刻, 很好地說明了類型的作用

也展現了idiomatic Haskell是怎麼個樣子

http://bitemyapp.com/posts/2014-12-03-why-are-types-useful.html

http://bitemyapp.com/posts/2014-11-18-strong-types-and-testing.html

我看他的bitemyapp/bloodhound · GitHub 庫的類型了解ES的Query是咋寫的

也有不少對FP教育的撕烤

http://bitemyapp.com/posts/2014-12-31-functional-education.html

http://bitemyapp.com/posts/2015-08-23-why-we-dont-chuck-readers-into-web-apps.html

所以作者是個靠譜的人, 書的樣章不錯, 就是太TM貴了(對於我這種日夜搬磚的人來說)

一些個人看法:

對於其他的入門書, 例如Learn You a Haskell for Great Good缺點是不夠modern, 覆蓋的東西不足以寫實用的代碼, 然後不是有本Real World Haskell? 這書成書時間是2008年,還在Haskell2010之後.

我覺得從LYAH到寫實用的代碼有個蠻大的鴻溝, 感謝 @閱千人而惜知己 寫了一本有豐富例子從入門深入到intermediate-haskell 的書(之前我覺得新手第二本書應該是Functional Programming in Scala), 蠻多人從入門看到Monad就放棄了, 希望有一本好的教程改變這種現狀.


已購,59刀買一本入門書,買的就是個信仰啊(大霧

讀完打算來一篇英文的book review發給Chris。。到時候我再貼過來

說點書外的事。。Chris Allen寫一本上千頁Haskell入門教材的初衷是破除Haskell難學這個人們心中的固有印象,效果如何,暫且拭目以待。這本書在Haskell社區的反響十分熱烈,一方面是鼓勵Chris,希望能向更多人安利Haskell,另一方面就是「已經有這麼多入門材料,再開坑沒意思」的troll,/r/haskell和郵件列表都有,感興趣的可以去Chris的推特(@bitemyapp)上看他曬的troll。。

哦對了,我也被Chris當成troll曬了,23333


買書到現在,每天抽空看一點。exercise看心情,有些沒寫。今天看完了第18章Monad,真的有一種demystified的感覺。先寫一寫讀到現在的感受吧,整本書看完我再回來完善我的答案。

註明,我看的是0.12版本。

1. 非常好懂,我覺得最主要原因是章節組織得當,和捨得多寫。
我之前讀過RWH, 讀到Monad,IO,do什麼的就很暈了。這本書,先講Haskell的類型系統(basic datatypes, types, typeclasses, algebraic datatypes),然後講一些函數式編程的patterns, recursion, list, folding等等。這算第一部分吧。
接下來是一塊兒比較獨立的部分,講building projects和testing,我暫時先跳過了。
下一個部分講monoid, functor, applicative和monad,環環相扣。有了第一部分的基礎,非常好讀。而且作者在前面部分介紹基礎內容時,非常用心地避免填鴨式的把概念一股腦的灌輸給讀者。比如很早的章節里作者就專門介紹了typeclass,但再後面的部分又出現typeclass時作者不斷地假設其實你並沒完全搞懂(?)從而反覆重複不斷用各種例子事無巨細地解釋與typeclass有關的內容,並做適當的拓展。作者是這樣比喻這一寫作風格的「We』ll do our best to leave a trail of breadcrumbs for you to follow up on the code we show you.」 Lol

2. 我對練習的看法

我覺得練習有點過於簡單。我看過作者之一的某篇博客,是講他對learn python the hard way這本書的書評。他在書評裡面有個重要的觀點大概是,他認為學習編程最好的方法就是不斷地寫短小的代碼片段實現剛學的概念,實驗各種可能反覆擺弄加深理解。他的書里的練習也大致秉承這一原則,目前為止我看到的練習都是沒有具體實際意義的,短小,但卻足以說明問題的編碼問題。但我還是覺得這些練習過於簡單抽象,能幫助理解概念,但對於實際中如何使用這些方法概念基本沒有太多幫助。這一點,我更喜歡RWH的方式。我也可以想像,讀完本書,離真正上手生產環境使用haskell差很遠(見編輯)。

2017.5.18 編輯

這幾天忙著別的事情,閱讀的進展有點滯後,只看了第13章Building Projects和第19章Applying Structure。看了這兩章之後我覺得自己之前「我也可以想像,讀完本書,離真正上手生產環境使用haskell差很遠」這一結論下的太早。第13章和第19章都恰恰是對使用haskell做real project非常有幫助的章節。第13章講解了很基礎的使用stack和cabal工具做haskell project的基本流程,餘下的章節帶著讀者寫了個簡單的hangman遊戲,其中大量使用了IO,定義了自己的dataype,定義了某typeclass的instance,以及運用了一些functional programming patterns。第19章呢也是非常practical的章節,與之前的章節很不一樣,這一章用各種實際的例子來闡述Monoid, Functor, Applicative和Monad在生產中都怎麼被用到,還有一個end-to-end example來wrap all up。

我很慶幸自己的閱讀順序(看完18章Monad之後再回去看第13章),因為沒看Monad之前第13章中IO的例子肯定讀得一頭霧水,我又是那種不把一件事徹底搞明白就很惱火的人。


+ 起點低,內容詳盡,解釋到位,代碼可運行,typo 少(《入門編程》typo 真是多得不得了)。

+ 文筆很輕鬆活潑,講了很多段子,當然肯定不能跟《趣學指南》比誰更二百五。

- 太厚,全書預計 1200 頁。

- 價格,$ 59.99。

==================

花了半個月把這本書基本看完了,已經看到第 19 章。可惜馬上要考 final 只能先等等了。

這本書難度很低,看作者的定位還包括了無編程基礎的人。每一部分都事無巨細地列出來(FP的基本常識/類型/類型類/monoid, functor, applicative, monad),此外還有兩章講了實際開發的工程管理和測試模塊。書挺厚(現在是 992 頁)。但是密度比較小,很多地方都是用好幾頁去解釋一點點東西(很有美式教科書的感覺),所以看起來還是非常輕鬆的。之所以看這本書是因為看了《Haskell函數式編程入門》看到後面就有點看不動了,《趣學指南》又感覺講得不過癮,多是淺嘗輒止。總之對我而言,這是最適合的入門書。看完這本書之後準備看看 Real World Haskell 練練手試試,包括 Project Euler。總感覺是個無底洞。(|||?д?)


已購買,占坑,看完再來評論。


還不錯,不過感覺是面向對編程毫無經驗的初學者的,看了 sample 感覺極其啰嗦

回頭看了下網站上的目錄,竟然沒講TH?雖然TH也沒啥特別的就是了=。=


其實只是因為大家在校園以外寫的少所以才覺得缺少入門書...


我最近看完了這本書,同時也刷完了data61/fp-course 上的習題,感覺非常好!

我大概是從兩個月前照著這本書學習開始學習haskell。一開始只是為了充實一下業餘生活,而這本haskell book看起來也是蠻容易讀的樣子,所以就開始讀它。

書的前半部分 (C1-C14) 其實並沒有什麼讓我覺得特別產生興趣的地方,看得也比較快。因為我以前看過半本SICP,和幾章learn you a good haskell,所以這塊內容還是蠻熟悉的。但是到了C15-C18, 就是 monoid, functor, applicative 和 monad那幾章,感覺haskell的獨特性就完全體現出來了。這幾章把haskell里的那幾個核心概念講的非常 beginners-friendly吧,讓人有了對這些看起來很生僻的概念有了一個宏觀上的和直覺性的理解。原來haskell是這麼的簡潔優雅啊。而也就是從這個時候,我對haskell真正產生了繼續學習的興趣。

有了興趣之後,剩下的事情就比較水到渠成了。為了幫助自己學習,我在繼續看書的同時,也開始去做 fp-course。不得不說,fp-course上的題目非常之好,把functor, applicative, monad這些東西翻來覆去的練,而且和haskellbook後半本書的內容是很對應的。題目看起來挺多的,但是自己貌似不到一個月也就做完了。刷完題之後,感覺自己寫haskell的信心增加相當很多。感覺也算是有了入門水平了吧(?)

總結就是,這本書對於入門haskell非常好,配合fp-course的話,可以說是完美haskell入門教材。


更新,感覺這本書

至少目前看完monad transform的章節都很順暢,不會像以前讀小紅書那樣盯著一頁看,想上半天都搞不懂了!

===============================已入,本來感覺智商欠費,和被OO毒害太久,對於haskell已經放棄了,但是由於作者保證 智障也能有春…哦,不,智障也能學會haskell,於是我做最後一次嘗試。以後再來添加讀後感…


買了一直都在看

有ebook版和screen版,一併發到郵箱,ebook在iPad mini下看非常完美。

說得是很細,甚至有點啰嗦。比learn you a Haskell。更深入一些,更透徹一些,有涉及到數學原理的會點一下,這個不錯,說實話,我沒基礎learn you 真看得雲里霧裡。

有習題可以跟著做,但有些題目比較捉急,有重複的練習,也有好像特別難的習題。網上有不少人上傳了系統練習,可以參考下。


看到這裡確實笑出聲……let the types flow through you


有書讀還不買,買了這本書的 early access ,感覺有點像字典,讀過的最好的還是網上~~裘~~喬海燕,翻譯的那本haskell


剛beta就買了,還停在lambda calculus那裡,已經把邀我的人寫在本子上


看到monad transform,感覺可以來回答了。

非常適合初學者,之前看過Learn You a Haskell for Great Good!,很多東西說的不明不白,看的似懂非懂其實不懂。

這本講解非常耐心,非常喜歡把一段代碼標上一串數字索引,下面逐個索引詳細講解的方式。

我還買了韓東的 魔力Haskell,但是韓東的這本更像講義,學著明顯陡峭,不過一旦chris的看懂了,以後想快速查查東西,我一般是用韓東的。

之前還看過scala函數式編程那本書,那本書前半部分看得懂,後半部分是天書。不過chris的這本看完,都撥雲見日了哈哈

不過,chris的這本書有1000多頁,只有英文版,你需要較大的興趣去保持耐心,沒有捷徑。


很貴,沒捨得買。

但感覺比Learn you a haskell for great good好,上來就講lambda……那本書我剛開始讀半天東西都忘掉了也沒找到個練習(逃……


推薦閱讀:

如何解釋 Haskell 中的單子(Monad)?
如何學習 Haskell ?
什麼是GADT?它有什麼作用?
OCaml or Haskell?
Comonad有什麼實際用途?

TAG:函數式編程 | Haskell |