跳到内容

代数图/打字

TypeScript中代数图的实现

净现值法 生成状态

藻类-ts是TypeScript中图形的代数构造和操作库。这是的TypeScript端口藻类藻类鳞片.

请参见哈斯克尔研讨会论文和相应的谈话对于图书馆背后的动机、基础理论和实施细节。还有一个Haskell交换话题、和辅导的亚历山大·莫恩(Alexandre Moine)。

注意:。请注意,此项目是WIP,因此请自行使用。

安装

主图书馆,藻类-ts,可在NPM获得。使用时fp-ts(英尺/秒)对于更高种类的类型,请确保也安装它:

npm安装--节省alga-ts fp-ts

用法

开始使用藻类-ts,首先需要为给定的等式目标数据类型的。考虑一下这个例子:

进口 { 获取结构等式, eq编号, eqString(eq字符串) }  'fp-ts/lib/Eq';
进口 { 获取实例 }  “alga-ts”;

接口 用户 {
  名称:一串;
  年龄:;
}

常数 eq用户 = 获取结构等式({
  名称:eqString(eq字符串),
  年龄:eq编号,
});

常数  = 获取实例(eqUser(设备用户));

现在是一个模块,包含处理图形所需的所有方法和构造函数用户:

常数 用户1:用户 = { 名称:“爱丽丝”, 年龄:32 };
常数 用户2:用户 = { 名称:“鲍勃”, 年龄:41 };
常数 用户3:用户 = { 名称:“查理”, 年龄:28 };

常数 图1 = .连接(
  .边缘(用户1, 用户2),
  .边缘(用户2, 用户3),
);

慰问.日志(.hasEdge公司(用户1, 用户3, 图1)); //=>真

可输送图形

代数图碰巧有类型类实例莫纳德(因此,对于Functor(仿真器)适用)和备选方案.API实例,通过获取获取实例,以数据列表的形式公开这些类型类中的方法,因此它们可以与一起使用fp-ts(英尺/秒):

进口 {  }  “fp-ts/lib/pipeable”;
进口 { 获取实例 }  “藻类ts”;

常数 GS公司 = 获取实例(eqString(eq字符串));...常数 图2 = (
  图1,
  .地图(u个 => u个.名称),
);

慰问.日志(GS公司.hasEdge公司(“爱丽丝”, “查理”, 图表2)); //=>真