codecamp

第十五章 Haskell资源

Resource

网络上 Haskell 的资源虽不少,但由于目前社区的人力有限。所以比较没能整理成一套能循序渐进的学习方式。常常会在 Haskell Wiki 上撞到对初学者太过于深入的东西。或是觉得奇怪怎么不断有之前没看过的东西冒出来。造成学习 Haskell 很大的撞墙期。这边译者会渐渐补充一些自己觉得有用的资源,尝试找到一些中阶的教材能够衔接初学跟高端。

Specification

  • Haskell 98 Report: Haskell 的标准,目前 GHC 如果不用任何 Extension,写出来的程序是符合 Haskell 98 的标准。
  • Haskell 2010 Report:,最新的标准,有许多已经实作但要开 Extension 才能用。

Tools

  • Hoogle: Haskell 函数的搜索引擎,不只可以用函数的名称搜索,也可以用函数的型态来搜索。
  • Hayoo: 跟 Hoogle 同样功能。
  • hdiff: 可以方便查找 package 不同版号之间的差异。
  • packdeps: 方便查找 Hackage 上面 package 之间的相依性。

Lectures & Articles

Forum

Online Judge

  • H-99: Ninety-Nine Haskell Problems
  • Project Euler: 已经算非常著名的 Online Judge,可惜只有上传答案。如果问题实在想不出来,Haskell Wiki 上也有参考答案。
  • SPOJ: 少数的 Online Judge 系统可以上传 Haskell 的,题目非常丰富。也是练 ACM ICPC 常用的网站。

Books

PL Researchers

Interesting Projects

Taiwan Functional Programming User Group


第十四章 Haskell Zippers 数据结构
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }