學習haskell的過程中有哪些值得一做的練手項目?
01-29
寫個深度學習的框架。比如 @帥氣可愛魔理沙 的 ThoughtWorksInc/DeepDarkFantasy
謝邀。
Type Inference
實現 Algorithm W for Hindley-Milner polymorphic type inference
https://github.com/wh5a/Algorithm-W-Step-By-Step/blob/master/AlgorithmW.pdf
相關資料
Type Inference
https://cs.anu.edu.au/courses/comp4630/lectures/Typed-LC-lect3.pdf
Unification
http://www.cse.unsw.edu.au/~cs3161/14s2/lectures/10/TypeInference.pdf
Monad
Monad Transformers Step by Step
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.71.596rep=rep1type=pdf
msakai/toysolver
- 一個簡單的 Parser Combinator, 當時我寫了個用來應付編譯原理作業. 可以參考 Monadic parsing in Haskell 和 Hutton 的 Programming in Haskell 相關章節, 稍微入門 Haskell 就可以寫了, 對理解 Monad, Applicative 還有以後用其他完備的 Parser Combinator 挺有幫助, 雖然實現上差距相當大
- 基於上面的 Parser Combinator 寫各種 Parser: S-Exp, JSON, HTTP, 某個二進位協議(例如 Memcache?) 有錯誤信息/恢復/位置, 做 benchmark, 體會各種 PC 的差別/拓展(parsec, attoparserc, readp)和自己的渣渣
- R5RS 編譯到 MIPS 模擬器, 寫編譯器算是 Haskell 看家項目, 所以提高點難度
- GNU Coreutils 里的各種工具, 可以用各種解析命令行參數的庫, 還有各種 Stream 抽象的庫, 不爽的話繼續 benchmark,你會發現為什麼 GNU 那幫人這麼變態, 參考: alexander-b/coreutilhs https://wiki.haskell.org/Simple_Unix_tools
- 一個簡單的 Web Framework, 可以理解Reader Monad, Monad Transformer, Haskell 應用的 Monad Stack 之類的吧, 可以參考 cbaatz/build-a-haskell-web-framework
- 把火車頭書(Java Concurrency in Practice) 跟 java.util.concurrent 用 Haskell 過一遍, 體會 Haskell 的並發優勢 (逃
- 上面都寫完再繼續吧
ninegua 大神有個關於Parser的手把手教程
Haskell 中文社區 :: 手把手教你做λ(八)替換與歸約推薦閱讀:
※函數式-21天入門教程
※如何理解F#里的 Computation Expressions (Haskell 里的 Monads? )
※愉悅的scheme之旅(2)--用callcc合成控制流
※R語言函數式編程purrr的應用
※Erlang入門教程 - 8. 在終端上輸出