11

TUNA技术沙龙及A Pretty Printer Library in Haskell

 3 years ago
source link: http://maskray.me/blog/2013-02-24-a-pretty-printer-library-in-haskell
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

TUNA技术沙龙及A Pretty Printer Library in Haskell

技术沙龙准备

三天前王康提议开学前的周末搞个活动,之后敲定由Cheer Xiao、heroxbd、Aron Xu和我做演讲。得到消息很诧异,因为以上几位都有丰富的系统管理经验,我就不知道能干什么了……但毕竟被逼上梁山了,最后Cheer Xiao让我讲Haskell。

我考虑了几种讲法:

  • 纯粹讲语法。大家可能不会有什么兴趣。
  • 和其他语言做比较,找设计独到的地方。以前做过类似的事,不太想重复。
  • 找一个function pearl。思考再三,觉得以前看过的Philip Wadler的pretty printer可能是最合适的了,用不到Haskell很多特性,需要了解的语法很少就能上手。在开头简单地过一下语法中的一个子集就能满足后面讲pretty printer的需求。

幻灯片工具jmpress.js

要是以前我肯定会纠结选择org-mode还是用pandoc风味的markdown,生成.tex文件后还要折腾xelatex的各种宏包,特别是得处理beamer的很多麻烦问题。由于我对LaTeX不熟,用起来势必捉襟见肘。尽管LaTeX号称排版功能强大,但我这样的入门用户是用起来就带脚炼跳舞。另外幻灯片缺乏显示以外的其他控制功能。索引、进度条、现代化一点的动画等,我知道LaTeX当然都能做,但做起来肯定不方便,它使用的语言看着就让人倒胃口了。

现在学了点网页前端领域的皮毛,htmlcssjavascript,一个个就其本身来说,都是我没法接受的。但引入了一层抽闲:各种现代化的模板引擎和coffeescripthtml这些东西就不再让人倒胃了。

我选择了jmpress.js作为演示工具。内容用jade编写,样式用stylus生成,脚本使用coffeescript

构建工具选用grunt-0.4.0,其grunt-contrib-watch插件能自动检测源文件是否修改并更新相关目标文件。源文件保存后,在浏览器里刷新就能立刻看到结果。而用beamer写的幻灯片,内容多了之后就得等上半分钟,很影响体验。

使用了coffeescript,几行代码就能实现其他幻灯片工具里难以实现的功能:

  • 在底部添加进度条,用彩虹色表示时间
  • 项目列表(还包括其他元素)的增量式显示
  • 操作DOM实现内容的复制

我把这次演讲当成了前端知识的一个极佳锻炼机会。

今天14:00活动开始。来现场的人好多……远远超过预期了,TUNA的潜水会员还真有这么多啊。碰到了好多久仰却从未谋面的人如heroxbd、smilekzs,神秘的curimit,高中+大学学长Gene……还有好多熟人就不讲了啊,不认识的同学还是不认识……以后是不是考虑结束后聚餐什么的。

首先Cheer Xiao和heroxbd给大家介绍了Google Summer of Code的事项,然后Debian Developer Aron Xu介绍了systemd,至于他们讲了什么……很抱歉,我一直在调css,设置字体大小,临到沙场才发现了好多之前没发现的bug,没怎么认真听……抱歉啊。

最后的遗憾是大家没有合影留念。

另外还有很多事情懵懵懂懂。在TUNA打了一年酱油却对TUNA的前生今世没有什么了解,包括但不限于活跃成员、目标计划、任务、指导教师、经费、活动场地、管理服务器、校内地位等。

平时在邮件列表里经常能看到“出口 QoS 策略讨论”、“rootkit 事件”等高深问题,可惜都没有找到老会员问清。

先偏一下话题。在一些问答社区里提问时,提问前先要自己搜寻相关资料做尝试,提问时要提供间断、具体、清晰的描述,热心回答者有疑问时要注意补充说明,任务完成后还要注意总结。作为TUNA邮件列表用户,我们是不是也应该注意这些?

A Pretty Printer Library in Haskell

HTML幻灯片

tarball下载

Share Comments


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK