解决Ubuntu下Firefox难看的字体显示问题

Ubuntu 下火狐的渲染总是让人无语。如下所示。 其实问题不在渲染,而是默认fallback到了AR PL Uming CN这个字体。那么,删除软件包fonts-arphic-uming即可。 删除后效果如下。

阅读全文

Constraint Handling Rules 从入门到精通(六) - Refined Operational Semantics

本文根据笔者2017年的一次讲座整理。 聪明的你一定发现,为什么执行顺序不确定的CHR程序,放到 K.U.Leuven CHR System 中,就一定会得到预期的执行结果呢?实际上,绝大多数CHR实现,包括 K.U.Leuven CHR Syste 在内,都使用另外一种语义 Refined Operational Semantics,记为 ωr\ome...

阅读全文

Constraint Handling Rules 从入门到精通(五) - 标准操作语义

本文根据笔者2017年的一次讲座整理。 语法描述了一个编程语言应该是什么样子,语义描述的是”是什么意思“。本文讲述CHR的标准操作语义(Standard Operational Semantics[1])。这套语义加入了防止重复应用规则的机制。 Numbered Constraints 给一个约束ccc加上一个值为iii的ID,用c#ic\#ic#i来表...

阅读全文

Constraint Handling Rules 从入门到精通(四) - 语法和语义:通俗的表达

本文根据笔者2017年的一次讲座整理。 在 Prolog 语法的基础上,CHR实现了自己的一套语法。CHR本身的语法也很简单,Gregory J. Duck. 实现过一个叫 ToyCHR[1] 的 reference implementation,只有500行代码。 Constraints 约束(Constraints)的概念,已经在之前提到过了。这里更...

阅读全文

Constraint Handling Rules 从入门到精通(三) - Prolog 基础

本文根据笔者2017年的一次讲座整理。 尽管CHR是一门 General Purpose 的编程语言,可以像C/C++那样用来做任何通用工作。然而,目前已有的实现,都是将CHR实现成一门嵌入式语言,就像lua那样。 CHR的语法,本身也是Prolog语法。这样做的好处是,CHR程序可以和Prolog程序混合在一起,让人毫不察觉。而对于那些不想和Prolo...

阅读全文

Constraint Handling Rules 从入门到精通(二) - declarative、执行顺序的随意性、并行的天然性

本文根据笔者2017年的一次讲座整理。 先看一段CHR代码[1],这段代码描述了一个CHR规则。 1min(X) \ min(Y) <=> X =< Y | true. 如何理解这段代码呢?若min(X)和min(Y)同时出现,且X≤YX \leq YX≤Y, 那么删除min(Y)。也就是,min(X)和min(Y)同时出现的时候,删掉...

阅读全文

Constraint Handling Rules 从入门到精通(一) - 如何用三行代码写一个最短路径

本文根据笔者2017年的一次讲座整理。 那今天我就给大家介绍一门新的编程语言,叫Constraint Handling Rules(缩写CHR)。CHR和C/C++等主流语言一样,是一门general purpose编程语言,换句话说,就是什么都能写。然而大多数时候,这个语言被实现为一个库。最主流的实现,是Leuven CHR System,被集成于各大...

阅读全文