在Haskell中模拟dependent type

cover > pixiv-ID: 61127101

Dependent type是一种依赖于值的类型,它增强了类型表达能力,让我们可以构造更强大的类型定义,无论用在定理证明还是用在减少程序出错的可能都是极好的。

本文我们讨论在Haskell中如何合理使用扩展模拟Dependent type。

Wadler惨案

cover > pixiv-ID: 56376665

伟大的将monad带入haskell的Philip Wadler曾说过一句名言:

Monad说白了不过就是自函子范畴上的一个幺半群而已,这有什么难理解的?

于是我决定认真理解一下这句话,于是两天时间被谋杀了,史称wadler惨案(雾)...但是也算是有一些收获。

本文只讨论monad的定义,对monad的用途意义等话题不做涉及。

point-free转换指南

cover > pixiv-ID: 55550732

本文几乎是对一个StackOverflow回答的翻译,欢迎有能力的同学去点个赞。

point-free是一种编程风格,简单的说,就是省略函数的参数。它的定义和内容不在本文讨论的范畴之中。 理论上讲任何函数都可以被转换为point-free风格,本文讨论的内容就是如何将一个普通函数转换为point-free风格。

为了更简便的说明,本文代码使用Haskell编写,但是读者就算不会Haskell也可以正常阅读。但是任何其它语言都可以通过几个工具函数来达到相同的效果。

九宫格中的奇技淫巧

cover > pixiv-ID: 54260293

九宫格是一个比较常见的布局,从微博到QQ空间到朋友圈都离不开它。实现九宫格的文章也是一抓一大把了,但是九宫格有一个有趣的细节:当图片是4张的时候,图片呈“田字格”排列(2X2),关于这一小细节的实现,常见的做法是为4图时专门写一个布局存在一个单独的className中,在JS中检测图片的张数为4张时替换为刚才的className,那么,有没有办法使用纯CSS搞定呢?