編寫屬于自己的Haskell

jopen 9年前發布 | 7K 次閱讀 Haskell

英文原文:Write You a Haskell

在 2014 年,我寫了一篇短教程,是關于用 Haskell 開發一種可以編譯成 LLVM 的、小型命令式語言。我對于教程貌似取得的效果感到非常開心,從那么多人那里得到的熱烈反響讓我深受鼓勵。

我在 2015 年能夠寫什么樣的最有影響力的主題,對此做了深入思考;決定在今年繼續努力,完成另一個基于項目的《根據首要原則開發一種簡單的函數式編程原則》。

這是一個不平凡的主題,不幸的是,它沒有得到太多重視,開發這種現代函數式語言的知識,沒有在很多程序員中得到擴散。可獲得的資源常常在討論高 深的理論,而完全掩蓋了工程細節(engineering details)。我想寫一個基于項目的、涵蓋工程細節的教程,在最后給讀者留下一個功能齊全的玩具語言,它可以擴展到其它項目。

我們將開發一種名叫“Fun”的小型函數式語言, 這是局部的 Haskell 2010 玩具語言;支持:分析器、類型引用、數據類型、模式匹配、脫糖(desugaring)、typeclass【注1】、高階類型(higher- kinded type)、monadic IO【注2】、任意階多態性、record、Core language、STG 中間語言、惰性求值、解釋器、內置代碼生成器、運行時和 optimization passes。

相對于我的大部分作品,本教程是預先編輯的、粗糙刪減的版本,我一直在完善。編譯器本身截止 2014 年 12 月份也是完整的,但是每一章(共 28 章)都是逐月完成的,這樣我就能根據讀者和測試人員的反饋逐步完善文字。關于運行時和代碼生成的后面幾個章節多少有些復雜、篇幅較長。

(譯者注:下面是教程,有興趣的可以學習~)

  • 注1:In computer science, a type class is a type system construct that supports ad hoc polymorphism. http://en.wikipedia.org/wiki/Type_class
  • 注2:為了引入 IO 操作,各種函數式語言八仙過海各顯神通。Monad 就是 Haskell 給出的方案。并且 Monad 并不僅僅是 IO 操作的抽象,它更是多種類似操作之間共性的抽象。http://zhuoqiang.me/what-is-monad.html
  • 注3:惰性求值(Lazy Evaluation),又稱惰性計算、懶惰求值,是一個計算機編程中的一個概念,它的目的是要最小化計算機要做的工作。http://zh.wikipedia.org/zh-cn/惰性求值

— END —

譯文: 《編寫屬于自己的 Haskell 》 臘八粥

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!