计算机科学基础实验室爱丁堡大学SICSA公司出席:

依赖类型元编程(Agda)

康诺·麦克布莱德

MSP公司,斯特拉斯克莱德大学



依赖类型的函数编程语言(如Agda)能够表达非常精确的数据类型。当这些数据本身对类型进行编码时,我们获得了一种强大的机制,可以在仔细限定的Universe上抽象泛型操作。本课程将从Agda中的快速依赖型编程入门开始,然后探索宇宙构建的技术和后果。最重要的是“模式函子”,它决定归纳和共归纳数据类型的节点结构。我们将考虑这些函子的语法表示(允许像符号微分一样有用的操作),并将它们与更统一的抽象概念“容器”联系起来。我们将把双寿命容器铅暴露为描述效应系统的“交互结构”。之后,我们开始研究宇宙上的函子,获得了归纳递归定义的强大功能,并使用该功能构建依赖类型的宇宙。

本课程获得复杂系统工程主题的财务支持SICSA公司苏格兰信息与计算机科学联盟。

前提条件:

本课程假设您熟悉类型化函数编程,但不需要具有独立类型编程或Agda的经验。

然而,我们确实建议提前接触Agda。早期在爱丁堡举办的Agda入门课程的材料可在以下网址找到:

位置:

课程材料:

所有课程材料都将在网上提供。

克隆初始存储库后,不要忘记提取最新更改:

git拉动原点

注册和组织:

请让我们知道您要来,以便我们做好相应的准备:

邮件列表:

欢迎在agda-Course-13{ät}-inf.ed.ac.uk邮件列表中发布课程公告、讨论和提问。非注册用户:欢迎您也加入,请给Danel或Sam发电子邮件加入,并注明您不是机器。

时间表:

14:00-15:00:实验课(从11月14日开始每周进行实验)

15:00-15:30:休息

15:30-16:30:讲座

16:30-17:00:休息

17:00-18:00:讲座

18:00-…:发布…

授课计划:

  1. 2013年11月14日:通过矢量介绍

  2. 2013年11月28日:简单型λ-微积分的元编程

  3. 2013年12月12日:容器和W型

  4. 2014年1月16日:索引的容器

  5. 2014年1月30日:归纳递归

  6. 2014年2月20日:观察平等

  7. 2014年4月3日:类型理论中的类型理论