前言

时间回到2011年初,我做了一些泛型编程(generic programming)的实验,最后这些实验形成了shapeless,我绝不会想到五年后它居然会成为一个被如此广泛使用的类库。非常感谢那些信任我并将shapeless用到项目中的人,这种信任对任何开源项目来说都是巨大的动力。同样感谢多年来对项目做出巨大贡献的人,截止写此书时共有81人,如果没有他们的帮助shapeless就不会这么有趣和有用了。

尽管有这些积极因素,shapeless也经历了所有开源项目的通病:缺乏完善的、准确的、易懂的文档。尽管我知晓这一点,但还是没能抽出时间在这方面做些事情,责任全在我。Travis Brown在Stack Overflow的英勇的表现以及很多人的讨论和实践,从一定程度上弥补了这一缺陷(此处我要特别指出Sam Halliday的“Shapeless for Mortals”)。

但是Dave Gurnell改变了这一切,他为我们写了这本精彩的书,此书介绍了shapeless的最重要的应用:通过泛型编程实现类型类(type class)派生。为了写此书他搜集了大量的代码和文档,征求了我的意见,并从一堆杂乱无章的文档和叙述中抽丝剥茧,使之变的清晰、简明、实用。幸运的是他也很好的实现了我的一贯主张——shapeless是一个非常简单的类库,它体现了一系列简单的原则。 感谢Dave,你为我们做了一件伟大的事情。

Miles Sabin

shapeless的作者