分类档案:思考

Stroll:一个实验构建系统

我想分享一个开发语言无关构建系统的实验,该系统不需要用户指定各个构建任务之间的依赖关系。我所说的“语言无关”是指用户不需要学习新的语言或特殊的文件格式来描述构建任务——现有的脚本或可执行文件可以直接用作构建任务,无需修改。

我称之为构建系统漫步因为它的构建算法让我想起了在一个你从未去过的公园里漫步,试图找出通往目标目的地的最佳路径,有时可能会绕圈,直到你建立起一个完整的公园心理地图。

继续阅读Stroll:一个实验构建系统

选择性应用函子

更新:我写了一篇关于选择性应用函子的论文,它完全取代了这篇博客文章(它也使用了一种稍微不同的符号)。你应该改读报纸

我经常需要一个支持条件的Haskell抽象(比如莫纳德)但仍然可以进行静态分析(类似适用). 在这种情况下,人们通常指向箭头类,更具体地说箭头选择,但是当我查的时候,我找到了几个类型类和十几个方法。令人印象深刻,直截了当,但也相当沉重。有更轻量级的方法吗?在这篇博客文章中,我将探讨我所称的选择性应用函子,它扩展了适用类型类,使用单个方法可以选择效果。

请见见选择性以下为:

 适用 (f)=>选择性 (f) 哪里
    手柄 :: (f)(要么  b条)-> (f)( -> b条)-> (f) b条

想想手柄作为选择性功能应用:应用类型为的处理程序函数a→b当给定类型的值时左侧a,但在以下情况下可以跳过处理程序(及其效果)右侧b.直觉上,手柄允许您有效地处理错误,即仅在需要时执行错误处理效果。

继续阅读选择性应用函子

用两个反相器反转宇宙

最近我遇到了一个有趣的谜题麻省理工学院技术评论2013年3月/4月以下为:

霍华德·科恩有很多AND和OR门,但只有两个逆变器。他怎么能反转三个信号a、b和c?

更一般地说,他想知道I/S的比率是否可以小于2/3,其中I是逆变器的数量,S是要反转的信号数量(同样,可以使用无限的and和OR门)。

我无法用笔和纸快速解决谜题的第一部分,所以我决定写一个蛮力解算器。为了让它更有趣我在哈斯克尔做的(顺便说一句,欢迎提出任何改进代码的建议!)。

继续阅读用两个反相器反转宇宙