来自cse

FP:FP周会

FP谈判现在可以从新的(2023年)开始FP集团主页.

下面的旧页面

想做一个函数式编程相关的演讲吗?与安东·埃克布拉德(Anton Ekblad)(安东内克在chalmers dot se)交谈,预订一个位置。我们通常每周五10:00有一次谈话。

谷歌日历链接

计划的会谈


过去的会议

2019-11-29,10:00,编辑8103

扬声器
科恩·克莱森(Koen Claessen),查尔默斯理工大学
标题
基于LTL属性构建和测试合成器
摘要
我正在构建一个“合成器”,这是一个工具,在给定系统的线性时序逻辑(LTL)属性规范的情况下,它可以自动计算满足所有LTL属性的状态机。本着“更多讨论正在进行的工作”的精神,我将介绍我已经走了多远,以及我现在面临的问题。
特别是,我需要一种有效的方法来测试我正在构建的工具的一些组件。其中一个组件从LTL转换为自动机,很难实现高效和正确,显然需要正确,并且很难测试!LTL语义处理在可执行属性上下文中难以处理的无限跟踪。
本演讲假设观众对LTL没有实际了解。一切都将得到解释:)

2019-09-13,10:00,EDIT分析

扬声器
亚伯拉罕·沃尔克,哥本哈根大学
标题
走向一个物理现实的通用并行计算模型
摘要
物理定律和三维欧几里德空间的几何形状限制了(1)信息传输速度和(2)网络拓扑的可扩展性。目前流行的并行计算模型要么没有考虑这些限制,要么将其降为模型的自由参数,这些参数可以根据手头的应用程序进行实例化。虽然后一个选项在分析拟在参数近似的/特定/机器上运行的算法时可能会产生有用的见解,但它无法以物理真实的方式深入了解算法在特定机器之外的可伸缩性。
在本次演讲中,我将提出开发并行计算模型的想法,在该模型中,计算被设想为在底层并行通用机器上执行的程序,该程序似乎可以物理实现。希望通过测量底层通用机器的资源消耗(包括时间和硬件资源),可以对执行算法所需的实际资源进行实际预测,并了解资源消耗如何以物理现实的方式扩展。

2019-09-6,10:00,EDIT分析

扬声器
查尔默斯·莫阿·约翰逊
标题
学习和自动推理非正式想法和新想法
摘要
这次演讲将非常非正式,我的目的是想看看是否能找到其他人,他们有兴趣讨论和研究一个有趣的问题,即如何在定理证明中结合学习和推理。
没有人会错过机器学习(尤其是深度学习)在许多领域的迅速发展和普及,包括自然语言处理。成功的机器学习系统能够做得很好的是,在某种意义上捕捉人类直觉的某些方面,尽管并不总是完美的。例如,谷歌翻译通常是可以理解的,但可能并不完美。
自然,在自动推理社区中,人们对机器学习也越来越感兴趣,尤其是在发现机器学习是否有助于完成需要人类直觉和交互的任务(例如选择下一种策略在交互式定理证明器中进行证明)方面或者现在由启发式指导的任务(例如在自动证明程序中选择子句、策略等)。
我一直在思考的一个具体问题是,如何最好地表示定理证明概念(例如函数、常数、数据类型、猜想、子目标等),以便使它们适用于希望向量或数值矩阵作为输入的机器学习模型。在文献中,使用的技术要么是手工制作的特征(基于heuristics),要么是来自NLP的技术,将符号视为自然语言中或多或少的单词。然而,定理证明语言中的单词(函数、常数、类型等)与NL单词之间存在根本差异。前者确实有一个正式的语义,应该加以利用!此外,在定理证明程序中,用户通常会添加新单词,例如每当他们定义新函数时。这在自然语言中很少发生。这在很大程度上被学习定理证明社区忽视了,但这是一个问题。那么,我们如何创建一个廉价的表示,为其添加新单词?
来自NLP的流行方法,如word2vec,用于学习向量表示法,训练成本很高,并且需要大量数据,因此,如果我们经常需要更新学习的向量表示法的话,这些方法的适用性是个问题。是否有现有方法?

2019-08-30,10:00,EDIT分析

扬声器
Hendrik van Antwerpen,代尔夫特大学
标题
Spoofax语言工作台
摘要
元语言的存在是为了改进(特定领域)编程语言的开发。语言工程师通过编写高级声明性规范来定义语言的各个方面。语言实现是从规范中派生出来的。在这次演讲中,我将讨论(a)Statix,一种用于名称绑定和键入规则的元语言,以及(b)正在进行的从Statix规范生成随机程序术语的工作。
演讲结束后,紧接着是一个小型研讨会,可以使用Spoofax,这是一个语言工作台,其中包含Statix的实现。我们将进行一些交互式语言开发,并通过使用新的语法结构和类型规则扩展STLC-with-Records的现有语言定义,来使用Spoofax的一些元语言。最好安装Spoofax,并获得我事先为本研讨会准备的工作区,这样我们可以专注于一些黑客攻击。有关说明,请参阅:https://hendrik.van-antwerpen.net/talks/20190830-chalmers网站/

2019-08-16,10:00,EDIT分析

我们将再次启动我们的函数式编程会谈,本周五我们将迎来一个精彩的开始!我们将举行至少四次FP会谈,这是ICFP的预演。我们制定了以下计划:

演示将在EDIT Analysen中进行。你可以在下面找到一些摘要。欢迎大家!

--

参数的简单非干涉,Maximilian代数

在本文中,我们重新审视了参数性和不干涉之间的联系。我们的主要贡献是证明了Abadi等人的依赖核心微积分在构造微积分中的多元变异不受干扰。证明是模块化的:它利用了构造演算的参数性和使用存在类型的数据抽象编码。这个观点给出了参数不干涉的简单易懂的证明。我们的所有贡献都在Agda证明助手中实现了机械化。

—

Hailstorm:一种用于系统的静态类型函数语言,Abhiroop Sarkar

这篇演讲介绍了一种正在进行的函数语言实现,它主要是为嵌入式系统编程而设计的。

—

研究一元关系数据库查询的范围,Anton Ekblad

我们提出了一种新的方法来确保一元嵌入式语言中的关系数据库查询范围良好,即使存在任意嵌套的连接和聚合。为了演示我们的方法,我们给出了Selda的简化版本,这是一种嵌入Haskell中的一元关系数据库查询语言,完全支持嵌套的内部查询。据我们所知,Selda是第一个使用一元接口支持完全通用内部查询的关系数据库查询语言。在Haskell社区中,monad实际上是各种库和EDSL的标准接口。研究人员和实践者都很好地理解它们,并且它们得到了标准库的一流支持。由于难以确保内部查询的范围很好,Haskell中的数据库接口以前要么被迫放弃一元接口的好处,要么不得不放弃内部查询提供的通用性。


2019-05-03,10:00,EDIT分析

扬声器
特洛伊斯·亨利克森(Troels Henriksen,DIKU)
标题
面向GPU的纯函数数组语言的编译器转换
摘要
Futhark是一种小型编程语言,旨在编译成高效的并行代码。它是一种静态类型的、数据并行的纯函数数组语言,附带一个优化的预先编译器,该编译器通过OpenCL和CUDA生成GPU代码。Futhark不是为图形编程而设计的,而是使用GPU的计算能力来加速数据并行阵列计算(GPGPU)。
本演讲介绍了Futhark语言的设计,并概述了几个关键的编译器优化,这些优化使性能可以与手写GPU代码媲美。通过使用函数源语言,我们获得了强大的不变量,从而简化并增强了传统编译器优化技术的应用。特别是,我将讨论(I)模块、多态性和高阶函数等高级特性的处理,(ii)循环交换和分布,以从嵌套并行源程序中提取扁平并行内核,(iii)多版本代码生成可以利用尽可能多的并行性并高效地对其余部分进行顺序化,以及(iv)数据布局转换,以确保GPU上的联合内存访问。

2019-04-12,10:00,编辑8103

扬声器
查尔默斯·赫伯特·兰格
标题
限制语法以减少歧义
摘要
形式语法是描述计算机科学和计算语言学中语言的有用工具。为了描述自然语言,大规模语法是必要的,例如语法框架资源语法库。但是,随着语法的规模和复杂性的增加,分析中出现了越来越多的歧义,这对于特定的应用来说是不可取的。
在本次演讲中,我将探讨如何限制形式语法,使其能够准确描述原始语言中特定于语言的片段,并且该片段可以以一组示例的形式给出。生成的语法将进行专门优化,以避免歧义分析。演讲的重点将是自然语言应用,但我将介绍的方法是通用的,可能会引起大家的兴趣。

2019-01-18,10:00,EDIT分析

扬声器
乔尔·斯文森(Joel Svensson),RISE
标题
基于ZYNQ ARM+FPGA的类Lisp解释器
摘要
这个演讲,也许更多的是一个示范,是关于一个我自己做的一个仅仅是为了好玩的爱好项目。我正在为一种类似lisp的语言编写解释器,我打算在ZYNQ ARM+FPGA(在ARM内核上)上运行。除了学习lisp类语言的实现之外,我还希望在使用开发板时能够获得一个纯语言REPL来帮助我。这是一个以工作为目的的项目,因此我们非常感谢您的建议和想法。

2018-10-26,10:00,编辑EA

扬声器
爱立信Josef Sveningsson
标题
Erlang的一个渐进型系统
摘要
本演讲介绍了一种基于渐进式键入的新型Erlang系统。在过去的十年里,逐渐打字的原则已经在类型系统研究界出现,并为现有语言产生了几个新的类型系统。渐变类型是为了混合静态和动态代码而定制的。类型系统提供pay-as-you-go静态检查:程序中的类型注释越多,执行的静态检查就越多。
我们开发的工具使用了Erlang当前的规范语法,并且可以在现有的代码基础上正常工作。我将详细介绍在为Erlang开发新的渐变类型系统时使用的设计原则。假设您之前不了解渐进式打字。
透析器是目前最流行的Erlang静态检查工具。我们的渐进式系统对透析器有一定的补充作用。虽然Dialyzer的目标是不提供误报,但只要类型规范与代码不匹配,我们的类型系统就会报告错误。我们将对这两种工具进行深入的比较。
这次演讲是今年Code Beam演讲的延伸版本。

2018-10-05,10:00,EDIT分析

扬声器
约翰·休斯,查尔默斯
标题
测试统计特性
摘要
随机算法(例如QuickCheck本身!)需要根据给定的概率进行选择。这种算法更难测试,因为测试需要以统计上合理的方式估计概率。在本次演讲中,我将根据Nick Smallbone和我最近所做的工作,从Quviq的一位客户那里获得灵感,探索如何在基于属性的测试中包含统计属性。
幻灯片
休斯统计属性.pdf

2018-09-28,10:00,EDIT 8103

扬声器
马克西米利安·阿尔盖德(Maximilian Algehed,Chalmers)
标题
依赖核演算透视
摘要
我将在Abadi等人[1]的依赖核心演算(DCC)的终止片段上提出一个简单但同样具有表现力的变体。DCC是一种简洁而优雅的跟踪依赖性演算。微积分在信息流控制、切片和绑定时间分析等领域都有应用。然而,在本文中,我们表明可以用一种替代的、更简单的配方取代DCC中的核心技术设备。该演算在与DCC相同的域中具有指称语义,我们用它证明了两个演算是等价的。为了证明我们的演算提供了对依赖关系的简单分析,我们在Haskell中实现了它,与之前的工作相比,实现起来更简单[2]。
这将是我将在与CCS合建的PLAS研讨会上进行的一次简短演讲。
[1] 依赖的核心演算-Abadi等人。[2] 在Haskell-Algehed和Russo中嵌入DCC

2018-09-21,10:00,EDIT分析

扬声器
纳奇亚潘·瓦利亚潘,查尔默斯
标题
用辛德利·米尔纳风格的埃尔朗(Erlang)打字《荒野》(the Wild)
摘要
近二十年来,开发一个适用于Erlang的静态类型系统一直备受关注。将静态类型系统改造为动态类型语言(如Erlang)的挑战是该语言在编程方面失去了灵活性。有鉴于此,许多人尝试输入Erlang贸易声音类型检查以保持灵活性。在这次演讲中,我将介绍一个用于Erlang的Hindley-Milner类型系统的实现,该系统力求在不受太多限制的情况下保持健全。我们的类型检查器与Hindley-Milner的当代实现不同,它足够灵活,可以允许重载数据构造函数、不同类型的分支等。此外,为了允许Erlang的动态类型行为,我们使用了一种称为部分求值的程序专门化技术。部分求值在类型检查之前简化了程序,因此使类型系统能够在某些限制条件下键入此类行为。
注:这篇演讲是我在即将到来的Erlang研讨会上的一篇简短演讲,基于我在Chalmers由John Hughes指导的硕士论文。
纸张链接:http://nachivpn.me/ew18.pdf

2018-09-14,11:00,EDIT分析

扬声器
查尔默斯·阿古斯汀·米斯塔
标题
QuickCheck生成器的分支过程
摘要
在QuickCheck(或者更一般地说,随机测试)中,控制随机数据生成器的分布是一项挑战,特别是当涉及到用户定义的代数数据类型(ADT)时。在本文中,我们调整了一个称为分支过程的数学领域的结果,并展示了它们如何帮助分析预测(在编译时)生成的构造函数的预期数量,即使存在相互递归或复合ADT。利用我们的概率公式,我们设计了能够自动调整概率的启发式算法,以合成分布与用户需求一致的生成器。我们在一个名为DRaGen的工具中提供了我们机制的Haskell实现,并用实际应用程序进行了案例研究。在生成随机值时,我们合成的QuickCheck生成器与最先进的工具自动生成的生成器相比,代码覆盖率有所提高。
链接:https://arxiv.org/abs/1808.01520

2018-09-12,13:15,EDIT 8103

扬声器
安德烈·莫霍夫(Andrey Mokhov),纽卡斯尔大学
标题
代数图
摘要
在处理图形时,你厌倦了摆弄顶点集和边集吗?您想用一个简单的代数数据类型来表示图形并使用熟悉的函数编程抽象来操作它们吗?在本次讲座中,我们将学习一种新的图形思维方式,以及在Haskell等函数式编程语言中使用图形的新方法。演讲中提出的想法在Alga图书馆中得以实现:https://github.com/snowleapon/alga。我希望演讲结束后,你能在一个小时内用你最喜欢的编程语言实现一个新的代数图形库。

2018-09-07,10:00,EDIT分析

扬声器
查尔默斯·Sólrún Halla Einarsdóttir
标题
走进无限——造物的理论探索
摘要
理论探索是一种利用测试和自动证明技术,在数学理论形式化中自动发现引理的技术。自动理论探索以前已经成功地应用于发现归纳理论的引理,关于递归数据类型和函数。我们将理论探索扩展到共导理论,从而可以探索同体数据类型和函数的双重概念。这需要开发新的方法来测试无限值和证明自动化。我们的工作已经在Hipster系统中实现,这是证明助理Isabelle/HOL的理论探索工具。
本次演讲是我即将在2018年AISC上进行的一次简短演讲,基于与Moa Johansson和Johannes Au-man Pohjola的合作。
纸张链接:http://www.cse.chalmers.se/~slrn/papers/into_infinite.pdf

2018-06-08,10:00,编辑EA

扬声器
马克西米利安·阿尔盖德(Maximilian Algehed,Chalmers)
标题
重新审视参数性和无干扰性
摘要
我将讨论一些系统F_\omega变体不干涉的新证明,这些变体利用依赖类型的参数。与之前的结果不同,我获得了基于参数的非干涉证明,用于非干涉的静态和动态强制。这些证明使用了Bernardy等人[1]提出的PTS参数公式。。在他们的理论中,PTS O中的一个术语被翻译成另一个PTS M、O和M中表示对象和元的术语,其中M术语表示从O中术语的类型和实现中导出的定理和证明。我们的证明基本上利用了两个系统的这种分离来向程序员隐藏部分安全数据类型。在我们的公式中,M语言构成了元语言和可信计算基础。

[1] 《免费证明》,J.P.Bernardy,P.Jansson,R.Patterson,JFP 2012


2018-06-01,10:00,编辑3364

扬声器
Edvard Hübinette和Fredrik Thune,Chalmers
标题
更好的内隐并行性(理科硕士论文展示)
摘要
ApplicativeDo在消除Haskells的do-notation时,尽可能去除Monad绑定。它通过查看语句间的依赖关系并在可能的情况下使用Applicative操作符来实现这一点;这在代码中引入了隐式并行。决定生成哪种结构很难,因为通常可能会有许多不同的结构。目前,这是通过使用单位成本模型进行简单的最小成本分析来解决的,假设每个报表的评估时间相同。
在Facebook上,马洛等人开发了[Haxl](https://github.com/facebook/haxl),一个可以使用应用表达式实现自由并行的数据提取库。据我们所知,它是唯一一个对Applicative表达式进行自动并行的库。
通过将ApplicativeDo算法中的成本模型扩展为可变评估成本,并通过GHC中的可选程序员杂注实现权重注释,我们通过优先处理重语句来更智能地生成代码。在使用Haxl时,这会带来非常好的加速效果,程序员只需做很少的额外工作。
ApplicativeDo由Desugaring Haskells的do-notation引入应用操作(Marlow,Peyton-Jones,Kmett,&Mokhov,Haskell Symposium 2016)Haxl由There Is No Fork引入(Marllow,Brandy,Coens,&Purdy,ICFP 2014)

2018-05-25,10:00,编辑EA

扬声器
马蒂亚斯·帕尔·吉苏拉森(Matthías Páll Gissurarson,Chalmers)
标题
建议类型孔的有效孔配合(硕士论文答辩)
摘要
大多数程序都是根据某种规范开发的,类型系统允许程序员通过类型将该规范的一部分传递给编译器。然后可以使用这些类型来验证实现是否与此部分规范匹配。但是,除了验证之外,这些类型还能在开发过程中帮助程序员吗?在本次演讲中,我将捍卫我的硕士论文,题为“建议有效的孔适合类型孔”,并为GHC的类型孔提供一个轻量级、实用的扩展,以改善用户体验并促进一种称为“类型驱动开发”的编程风格。

2018-05-18,10:00,编辑3364

扬声器
苏莱曼·萨瓦斯,霍格斯科兰i哈尔姆斯塔德
标题
从数据流程序设计特定于域的异构体系结构
摘要
在过去的十年里,性能和电源需求将只使用单个内核的计算机体系结构推向了在单个芯片上拥有数百个内核的所谓多核系统。为了进一步提高性能和能效,我们现在正在开发具有专业化和加速核心的异构体系结构。然而,由于其固有的复杂性,设计这些异构系统是一项具有挑战性的任务。我们提出了一种通过将硬件加速器集成到简单内核中来设计基于指令增强的特定于域的异构体系结构的方法。这些硬件加速器是根据它们在特定域内的应用程序之间的通用性来确定的。目标是通过集成这些加速核心并将其与网络芯片连接,生成异构架构。该方法旨在简化异构多核架构的设计,从而通过自动化设计步骤来探索设计空间。为了评估我们的方法,我们使用一种可以从数据流程序生成加速核心的工具来增强我们的软件工具链。这一新的工具链是在两个用例的帮助下进行评估的:雷达信号处理和移动基带处理。我们可以实现大约4倍的性能改进,同时在增强内核上执行完整的应用程序,对区域使用率影响很小(2.513%)。生成的加速器具有竞争力,实现了手写实现90%以上的性能。
在本次演讲中,我将概述我们开发异构体系结构的设计方法,并使用我们的工具链自动生成的自定义扩展。工具链将数据流应用程序作为输入,并用函数编程语言生成自定义硬件,然后将其转换为verilog。
幻灯片
萨瓦斯.pdf

2018-04-20,10:00,编辑3364

扬声器
Troels Henriksen,哥本哈根大学DIKU
标题
Futhark编程语言的设计与实现
摘要
Futhark是DIKU正在开发的一种数据并行编程语言。该语言支持(常规)嵌套数据并行,并具有快速开发的优化编译器。本演示文稿介绍了Futhark及其编译器,重点介绍了高效OpenCL GPU内核的生成以及Futhark编译器为确保融合和高效内存访问而自动采取的步骤。在演示文稿中,我将讨论代码生成的各种权衡,以及新的版本控制技术如何在运行时决定不同的并行化策略。

2018-03-09,10:00,编辑3364

扬声器
索莱恩·米利亚兹(Solène Mirliaz)和伊丽莎白·洛博(Elisabet Lobo,Chalmers)
标题
通过范畴理论解释Lambda演算(非专家实用编程指南)
摘要
为了实现优化,许多特定于域的语言通常以深度嵌入的方式实现。EDSL的许多技术迟早都会重复主持人的工作——对于这颗珍珠,那就是GHC。最近,出现了一种新的方法,称为编译到类别,并承诺避免这种重复工作。它依赖于理解笛卡尔闭合类别(CCC)的类别模型。这意味着,要使用这种新技术,就必须了解基本范畴理论和CCC。不幸的是,当学习这些主题及其与函数程序的关系时,人们面临着潜入数学书籍的风险,其中包含难以理解的符号,陷入抽象概念,最终放弃。相反,这颗珍珠旨在引导Haskell开发人员通过Haskel代码理解所有这些抽象概念。我们在Haskell中给出了两个EDSL:一个用于简单类型的lambda术语,另一个用于CCC,并展示了如何将程序从一个转换为另一个,这是1985年Lambek的一个著名结果。为了实现转换,我们的实现依赖于GHC封闭型系列。通过进入CCC,可以对lambda术语进行多种解释,但在本文中,我们只关注传统的按值调用语义。因此,我们还展示了如何通过分类抽象机(CAM)执行CCC程序。此外,通过基于范畴理论概念对CCC和CAM进行适当的增强,我们扩展了简单型lambda演算的实现,包括原始运算符、分支和不动点。所有这段旅程都将以Haskell代码为基础,这样开发人员就可以试验并不再像我们那样害怕抽象概念。
本次演讲基于与亚历杭德罗·拉索的合作。

2018-03-02,10:00,编辑8103

扬声器
多米尼克·乌节,肯特大学
标题
解释其效果的程序(在Haskell中)
摘要
在Haskell中编写有效程序的传统方法是使用单子和“do”表示法。在演讲中,我将展示两种更丰富的捕捉效果的结构:参数化单体和分级单体。两者都提供了在程序类型中捕获有关程序副作用的更多信息的方法,可用于检测与效果相关的错误。这些结构可以直接在GHC/Haskell中编程,因为有一个扩展,允许“do”符号反弹到不同的结构,而不是单子。还将有具体的、真实的例子。
幻灯片
https://github.com/dorchard/effectful-explanations-talk

2017-12-15,10:00,编辑3364

扬声器
马蒂亚斯·帕尔·吉苏拉森
标题
建议有效替代类型孔
摘要
在使用大型软件库时,一个常见的问题是如何发现这些库中的函数和常量。类型化孔是Haskell的一个特性,程序员可以在其中指定表达式中的孔,并让编译器根据上下文推断出这些孔的相关信息。我们的贡献是对这些漏洞功能的扩展,其中类型定向搜索用于向程序员建议这些漏洞的有效替换。该延期已被GHC接受。

2017-12-08,10:00,编辑3364

扬声器
Maximilian代数
标题
SessionCheck,通信系统的双向测试
摘要
我将介绍一个名为SessionCheck的新工具。此工具帮助程序员编写正确工作的分布式应用程序。SessionCheck旨在帮助程序员摆脱为多个应用程序组件维护多个规范和测试套件的单调乏味。SessionCheck通过借鉴会话类型和领域特定语言的思想来实现这一点,以便为通信协议提供一种简单但富有表现力的组合规范语言。用SessionCheck规范语言编写的规范可用于以完全与语言无关的方式测试同一协议的客户端和服务器实现。

2017-12-01,10:00,编辑3364

扬声器
尼古拉·博塔
标题
责任、影响和顺序决策问题
摘要
以一致的方式分配责任,例如温室气体排放单位的责任,对于公平分担负担甚至补偿计划,以及有效的决策都至关重要:人们希望在真正重要的决策中投入计算或人力资源。但我们如何计算哪些决策真正重要呢?我们认为,不确定性下最优决策的相关类型形式化是推导影响/责任度量的良好起点。

2017-11-03,10:00,编辑3364

扬声器
阿内·兰塔
标题
可解释的机器翻译
摘要
可解释人工智能(XAI)旨在缓解基于机器学习的人工智能技术的黑盒特性。这种技术的一个主要示例是神经机器翻译(NMT),它通过端到端的字符串转换工作,其中中间阶段是机器创建的浮点数向量。虽然NMT的平均分数高于旧方法,但它的问题是,最终的翻译有时是完全错误的,在不了解源语言和目标语言的情况下,很难区分好的翻译和坏的翻译。
可解释机器翻译(XMT)将XAI思想应用于翻译领域。它受到了Kurt Mehlhorn的认证算法概念的启发:不仅产生结果,还产生证书的算法——用户可以检查的证据。我们提出的证明是构造型理论中的一个公式,它编码了可翻译内容的语义和抽象句法结构。公式是由解析器获得的,解析器本身可能是一个黑盒,但它与源文本和目标文本有正式定义的关系。在我们实现这个想法的过程中,解析器是一个返回通用依赖(UD)树的神经依赖解析器。这些树被解释为类型理论公式,形成翻译中间语。最后,通过使用语法框架(GF)将语际语线性化为目标语言。最后一步是由形式规则定义的,因此易于验证,而解析步骤(涉及对无限制人类语言的解释)是机器学习方法的天然场所。通过将公式作为这一步骤的结果,我们可以提高整个翻译过程的可靠性。

2017-10-27,10:00,编辑3364

扬声器
埃米尔·阿克塞尔森
标题
Rhino——一种面向数据中心应用程序的DSL
摘要
在这次演讲中,我将介绍我们在Mpowered Business Solutions开发Rhino的情况。Rhino是一个功能性DSL/框架,面向以数据为中心的应用程序,例如法规遵从性计算,涉及管理潜在的大量数据,并根据这些数据的计算提供报告。目标是一个完全声明性的框架,程序员可以在其中关注应用程序的结构和逻辑,而不是它将如何运行的细节。我们设想了声明式系统的几个优点:(1)快速发展;(2) 易于领域专家使用;(3) 包括第三方插件的易处理性(由于缺乏副作用);等等。
犀牛正在进行大量工作。演讲将重点讨论Rhino中使用的纯函数计算和查询语言。我还将分享从早期尝试在Haskell中将Rhino实现为嵌入式DSL中获得的一些经验教训。
Mpowerd的核心产品是一个工具包,用于衡量南非公司多元化立法的遵守情况。Rhino旨在通过分解业务逻辑来改进现有的实现,以获得更易于维护的系统,并允许领域专家编写计算。幸运的是,Rhino甚至可能对同一领域的其他企业有用。

2017-10-06,10:00,编辑3364

扬声器
珍妮·菲利佩·伯纳迪
标题
TypedFlow:HOT部件
摘要
TensorFlow是一个使用数据流图进行数值计算的开源软件库。图中的节点表示数学运算,而图边表示它们之间通信的多维数据数组(张量)。TensorFlow图可以在GPU上进行有效评估,是实现深度学习应用程序的常用选择。
TypedFlow是张量流的高阶类型(HOT)前端,用(格拉斯哥)Haskell编写。
在这次演讲中,我将:
  • 简要解释TensorFlow是什么以及它如何应用于深度学习
  • 回顾HOT方法的优点
  • 公开一些使用TypedFlow编写的示例程序
  • 演示如何使用GHC扩展来给出张量流函数的精确类型
  • 讨论这样做的一些困难

2017-09-15,14:15,编辑EB

扬声器
埃里克·赫兹
标题
一元函数逼近方法及其硬件实现
摘要
计算机图形学、数字信号处理、通信系统、机器人学、天体物理学、流体物理学和许多其他领域的应用已经发展成为计算密集型应用。算法变得越来越复杂,要求计算的准确性更高。此外,在许多情况下,用于这些应用程序的软件解决方案在性能方面是不够的。因此需要硬件实现。算法中经常出现的瓶颈是一元函数(如三角函数、对数和平方根)以及二进制函数(如除法)的近似性能。因此,面临的挑战是开发一种在硬件中实现一元函数近似值的方法,以满足不断增长的需求。该方法需要实现快速执行时间、低复杂性、易于在硬件中实现的基本操作,因为许多应用程序都是电池供电的低功耗应用程序。为了确保近似是其中一部分的整个计算的适当性能,近似误差的特性和分布也是必须能够管理的。
提出的新近似方法旨在通过使用辅助函数来减小查找表的大小。它们是建立在通过乘法而不是最常见的加法来合成抛物函数的基础上的。
对于某些函数,如根、逆根和逆根,使用近似的直接解决方案是不可管理的。由于这些函数在许多计算密集型算法中很常见,因此有必要找到这些函数的高效实现。本文还提出了新的方法。它们都基于浮点格式,对于根函数,还使用了更改数字基数。由于近似算法是在有限范围的尾数上执行的,因此这些变换不仅可以实现更简单的解,而且可以提高精度。

2017-09-01,10:00,编辑8103

扬声器
安东·埃克布雷德
标题
分布式Web应用的Meta-EDSL
摘要
我们提出了一种特定于域的语言,用于构建和配置分布在任何数量的网络化、异构系统上的web应用程序。我们的语言嵌入在Haskell中,为集成用第三方EDSL编写的组件提供了一个通用框架,并支持节点之间的类型安全、访问控制通信,以及应用程序组件之间的轻松共享和功能移动。我们给出了我们的语言的一个实现,并通过使用它实现分布式web应用程序的几个重要组件来证明其适用性,包括RDBMS集成、负载平衡和不受信任的第三方代码的细粒度沙箱。
这是我在Haskell Symposium’17的演讲的预演,所以请多提一些意见和建议。

2017-08-25,10:00,编辑EF

扬声器
马库斯·阿伦森
标题
Haskell中的软硬件协同设计
摘要
我将在Haskell中提供一个用于编程现场可编程门阵列(FPGA)的库,包括硬件-软件协同设计。软件(C)和硬件(VHDL)的代码由单个程序生成。然而,该库是开放的,因为我们基于类型的嵌入技术允许实现两种以上的嵌入式领域特定语言(EDSL)。代码生成是在逐渐变小的类型化EDSL之间实现的一系列翻译,以防止非类型化翻译中出现错误。
如果您熟悉Feldspar,请将其视为支持编译到VHDL和C的重新设计。

2017-06-16,10:00,EDIT 8103

扬声器
安东·埃克布雷德
标题
确定一元关系数据库查询的范围
摘要
在这次演讲中,我介绍了Selda,它是一个单体DSL,用于嵌入在Haskell中的关系数据库查询,使用列表单体的语义作为基础。Selda通过在完全通用的内部查询上包含连接和聚合,改进了数据库DSL的当前技术水平。为此,我提出了一种简单但新颖的方法来确保内部查询的范围很好。
在Haskell社区中,monad实际上是各种库和EDSL的标准接口。研究人员和实践者都很好地理解它们,并且它们得到了标准库的一流支持。由于难以确保内部查询的范围很好,Haskell中的数据库接口要么是基于其他不太熟悉的抽象,要么是没有内部查询提供的通用性。
这次演讲是2017年TFP的预演。从幻灯片到演讲结构再到内容本身,所有内容的反馈都比平时更受欢迎!

2017-06-09,10:00,EDIT 8103

扬声器
林娜·安德森和安德烈亚斯·瓦尔斯特伦
标题
一种新的递归归纳原理的评价
摘要
结构归纳法是证明具有递归结构的函数属性的有力工具,但当函数不保留输入的结构时,它是无用的。当今许多前沿的定理证明工具都使用结构归纳法,这使得它们无法证明非结构递归函数的性质。我们引入了一个新的归纳原理,其中归纳是通过函数应用程序完成的。这个原理使得证明非结构递归函数的性质成为可能。

2017-06-02,10:00,编辑8103

扬声器
里贾娜·赫比格
标题
使用建模技术构建DSL我们教什么以及我们的学生从中获得什么
摘要
我们在软件工程项目和WASP项目中教授DSL开发,以帮助硕士生和实践者。在这样做的过程中,我们关注建模技术,例如元建模、Xtext、OCL、代码生成和模型转换。在讲座中,我们将对这些技术进行概述,并讨论学生在多大程度上能够采用和使用这些技术。为此,我们将展示课程中创建的DSL示例。

2017-05-19,10:00,编辑EA

扬声器
亚历杭德罗·拉索
标题
保护懒惰程序
摘要
信息流控制库作为嵌入式领域特定语言存在于函数编程语言Haskell中。Haskell的一个显著特点是它的惰性评估策略。2013年,Buiras和Russo对LIO库进行了攻击,利用懒惰评估通过内部定时隐蔽通道泄漏信息。这种隐蔽通道仅表现为并发和共享资源的存在。LIO仅针对库可以调用的公共共享资源(例如引用)通过此类隐蔽通道删除泄漏。延迟求值就绪后,由let-bindings和函数应用程序引入的变量(无法由LIO控制)将成为共享资源,并强制其求值对应于影响线程计时行为。避免此类泄漏的一种简单方法是强制计算线程之间可能共享的变量。不幸的是,这个解决方案违背了懒惰求值的核心目的之一:避免对不需要的表达式求值!更重要的是,并不总是可以将表达式计算为其指示值——其中一些表达式可以表示无限结构。相反,这项工作提出了一种新的方法,可以在编程语言级别显式控制惰性计算引入的共享。我们设计了一个新的原语lazyDup,它惰性地复制未赋值的表达式以及它们可能依赖的任何子表达式。我们以具有共享和可变引用的并发按需计算的形式,对安全MAC库和lazyDup进行了形式化。我们用Agda中的机械化证明来支持我们的正式结果。虽然我们关注MAC,但我们的结果也适用于其他IFC库,如LIO和HLIO。
本次演讲基于与Marco Vassena和Joachim Breitner的联合工作(将在8月的IEEE计算机安全研讨会上介绍)。

2017-05-12,10:00,EDIT 8103

扬声器
Peter Thanisch和Jyrki Nummenmaa
标题
我们如何增强数据表达式的类型安全性?
摘要
信息系统,如数据库系统、统计数据包和电子表格程序,允许用户提取聚合数据,这些数据是由包含统计函数的表达式指定的,通常使用声明性语言,并且与从原始类型声明中收集的类型信息相比,类型信息很少。主题专家通常知道其他相关类型的信息,但信息系统忽略了这些信息。因此,如果类型检查利用了额外的类型信息,类型安全表达式可能会产生无意义的答案,这是可以避免的。我们已经确定了一小组元数据项以及类型推理规则,可以用来提供增强的类型安全概念。这使我们能够对数据表达式执行静态检查,以便在根据数据评估表达式之前识别潜在的类型安全问题。为了说明我们的方法,我们实现了基于规则的软件,该软件对包含复杂算术表达式(包括统计聚合函数)的SQL查询执行这种增强的类型检查。
我们没有做的是开发一个更通用的解决方案,其中将这种类型推断合并到合适的函数式编程语言中。

2017-05-05,10:00,EDIT 8103

扬声器
约翰·杰林
标题
描述认知技能的可扩展策略语言
摘要
学生学习解决许多领域问题的认知技能。在过去的十年里,我们开发了一种策略语言:一种特定领域的语言,用于表达认知技能和解决问题的程序。认知技能策略可用于为学生在学习环境、智能辅导系统或严肃游戏中的互动提供反馈、提示和解决方案。我们经常扩展策略语言来捕捉描述策略时出现的新模式。此类扩展的示例包括偏好组合符,表示一种策略优先于另一种策略,以及描述策略的任何初始部分也被接受的组合符。
在这次演讲中,我将讨论我们的战略语言的基本要求,并展示如何在保留这些要求的同时扩展战略语言。我们为最小策略语言提供了精确的、基于跟踪的语义。利用这种语义,我们研究了策略语言的代数性质。我们描述了几种语言扩展,指定了新的组合子及其代数性质,并讨论了它们的引入对策略语言及其需求的影响。通过给出学习环境、智能辅导系统和严肃游戏中的实际示例来说明语言扩展。
幻灯片
可扩展战略.pdf

2017-04-28,10:00,EDIT 8103

扬声器
斯文·博多·肖尔茨(Sven-Bodo Scholz),赫里奥瓦特大学
标题
超有限阵列的Lambda演算——走向流和阵列的统一
摘要
数组和流看起来基本上是不一致的:数组需要提前知道其大小,流是动态增长的;阵列提供对其所有元素的直接访问,流仅提供对前端元素的直接存取;尽管存在这些差异,许多计算问题在某些时候需要从一种范式转换到另一种范式。这种转变的驱动力可以是多方面的。通常,这是手头任务需求的转变,或者是出于效率考虑。在本次演讲中,我们为处理类似数组和流的统一框架提供了基础。我们介绍了一种实用的lambda演算,其基本数据结构是一种新的数组形式,称为“超有限数组”。超有限数组保留了有限数组计算的属性,但也包含了对无限数组的支持。事实证明,甚至可以维护递归规范,因为它们通常位于基于流/列表的传统设置中。

2017-04-21,10:00,编辑EF

扬声器
Maximilian代数
标题
依赖核心演算新解
摘要
依赖核心演算(DCC)是一种静态跟踪函数程序中依赖关系的演算,它已经存在多年了。DCC用于研究多程序分析,如调用跟踪、绑定时间分析、切片和信息流控制。
在这次演讲中,我将在Haskell中介绍DCC的一个新实现,重点是应用信息流控制。本演讲将介绍此实现所产生的三个新的主要贡献,即(i)实现本身,(ii)如何安全地将单子变压器添加到DCC中以模拟效果,以及(iii)一个新的、替代的DCC公式,它概括了原论文中的一些想法。
本次演讲基于与亚历杭德罗·拉索(Alejandro Russo)的联合工作成果。

2017-04-07,10:00,编辑8103

扬声器
侏罗纪黑格
标题
GHC中的自定义类型错误消息
摘要
我在Chalmers休假期间的最后一次演示的重点是展示我们在自定义类型错误的Glasgow Haskell编译器环境中所取得的成就。在这项工作中,我们使用类型级编程来实现我们的自定义,利用了编译器最近的一些新增功能。这种方法的一个显著优点是代码和诊断都在Haskell中,我们可以使用该语言提供给我们的所有抽象方法。这是最近的作品,事实上,这篇论文是我访问查尔默斯时写的。

2017-03-31,10:00,编辑3364

扬声器
亚历杭德罗·拉索
标题
使用基于语言的技术构建安全的嵌入式系统
摘要
低级语言,如C/C++,在工业中被广泛用于开发嵌入式系统。如何对这些系统进行编程涉及计算机的内部细节,如内存指针的使用和动态内存的手动处理。软件开发的历史告诉我们,在最常见和最难纠正的错误中,存在悬空指针,即指向无效内存位置或不再使用的指针。当嵌入式系统也并发时,也存在竞争条件问题。编译器可以帮助程序员避免此类问题,这对程序员没有好处吗?(从而构建更安全的系统)。
Rust是Mozilla最近开发的一种语言,用于开发需要高性能和小执行环境(运行时)的系统。Firefox浏览器的一部分已经用这种语言实现。Rust使用编程语言的原理​​并实现了一个类型系统,能够检测输入无效指针的可能性,并在没有垃圾收集器的情况下自动处理内存分配。在这次演讲中,我将讨论Rust背后的原理和哲学,以及如何将其用于构建安全系统。

2017-03-17,10:00,编辑3364

扬声器
亚历杭德罗·拉索
标题
选择你自己的冒险:多面价值语义、安全多执行和许多其他可能的结局
摘要
有许多编程语言技术可以证明敏感信息在被不可信代码操作时不会泄漏。它们的范围从静态强制(如类型系统)到动态强制(如执行监控器)。尽管当检测到可能的泄漏时,这些技术会引发虚假警报,这是几乎所有执法部门都普遍存在的一个方面。安全多执行(SME)是一种技术,它可以将错误警报的数量减少到几乎为零!付出的代价是多次执行程序,每个安全级别一次(例如,公开、机密、最高机密等)。在存在许多安全级别的情况下,SME可能无法工作。作为另一种选择,研究人员提出了多面值语义(MF)技术,其中每一块数据都具有与安全级别一样多的“视图”(值)。MF尽可能只运行一次指令,同时对不同的视图进行计算。此规则的例外是分支:如果要执行的分支(即then-或els-branch)取决于所考虑的视图,则MF会重复执行分支。尽管MF被称为“SME的优化”,但研究人员最近表明,它们提供了不同的安全保障。如果两种方法都能提供相同的安全保证,那么对于哪种方法更好(在减少假警报方面)或更高性能(更少的多执行),还没有最终的判断。
受SME和MF比较的启发,我们将提出一种微积分,根据其解释方式,它在SME、MF或两者的组合下运行程序!重要的是,所有口译员的类型签名都是相同的,这给了我们希望,这两种方法可以统一。我们在Haskell中将我们的想法实现为EDSL,其中的代码(和类型)帮助我们发现两种方法之间的公共根。本次演讲还将展示一些我们陷入困境的大胆想法——我们希望FP人群能够为我们提供一些关于如何继续前进的启示。
本次演讲基于与托马斯·施密茨、科马克·弗拉纳根、娜塔莉娅·贝洛娃和塔玛拉·雷兹克的合作成果。

2017-03-10,10:00,编辑8103

扬声器
侏罗纪黑格
标题
Haskell中的领域特定类型错误诊断
摘要
适用于嵌入特定域语言的通用语言的类型错误诊断面临的一个挑战是,要根据域而不是宿主语言中的底层编码来解释错误。在这次演讲中,我将讨论过去十年我们在氦编译器中所做的工作,并讨论Haskell在Haskell98之后的最新结果。

2017-03-03,10:00,编辑8103

扬声器
乔·皮萨尼
标题
Agda中的硬件电路描述和验证
摘要
受函数编程的启发,DSL有一个用于硬件建模的传统(相当大的努力源于Chalmers)。在我们的工作中,我们基于这一传统,使用依赖类型来确保电路具有构造所满足的良好条件。我们的DSL的依赖类型主机还允许用与电路模型本身相同的语言编写电路行为的证明(并由相同的编译器检查)。
在本次演讲中,我们介绍了两个用于电路描述的Agda EDSL,一个(Pi-Ware)具有低级的电路架构视图,另一个(Lambda1)具有更类似于熟悉的λ演算的语法和类型。我们评论了对这些语言施加的限制,以确保它们只包含“合理直接”映射到硬件的术语,并给出了如何建模和验证每个语言中的电路的一些示例。

2017-02-24,10:00,EDIT 8103

扬声器
拉尔夫·拉梅尔
标题
软件语言工程和元编程的哈斯克尔之路
摘要
在这次演讲中,我想勾画一下我即将出版的关于软件语言的教科书http://www.softlang.org/book网站戴上Haskell程序员的帽子。总的来说,这本书解决了软件语言工程和元编程的许多问题:内部和外部DSL、对象-程序表示、解析、模板处理、漂亮打印、解释、编译、类型检查、软件分析、软件转换、重写、属性文法、部分求值、,程序生成、抽象解释、具体对象语法等等。Haskell在本书中发挥了重要作用,因为Haskells用于各种语言处理器的实现,尽管还利用了其他一些编程语言(Python、Java和Prolog)和特定于域的语言(例如,用于语法定义)。我希望这次演讲能起到互动作用,帮助我完成材料,并可能给观众一些关于FP和软件语言相关教育和知识管理的想法。
幻灯片
http://softlang.uni-koblenz.de/book/slides/HsSleMp.pdf

2017-02-17,10:00,编辑8103

扬声器
卡尔·塞格
标题
从抽象规范到详细实现:如何正确使用基于加速器的代码
摘要
在过去的十年里,计算机单线程性能的快速增长已经大大减缓。加速单线程应用程序的一种方法是使用自定义硬件作为其一部分。不幸的是,完全自定义的硬件开发成本极高,很快就会过时,而且非常不灵活。现场可编程门阵列(FPGA)已经出现,它在CPU的通用性和定制硬件的性能之间提供了一个很好的折衷方案。随着FPGA开始与CPU更紧密地集成,在特定的单线程应用程序上实现几个数量级的加速变得可行,并且此类加速器开始广泛部署。对于这些软硬件混合系统来说,一个非常实际的挑战是如何确保解决方案的正确性。更为复杂的是调试定制硬件(无论是基于FPGA还是基于ASIC)的困难。在这次演讲中,我将讨论一种方法,该方法是受早期有效硬件设计工作的启发,我在访问期间所追求的。更具体地说,我提倡一种集成的设计和验证方法,以便在最终实现时,能够正式证明其正确性。演讲内容非常详细地描述了正在进行的工作,我希望有很多问题!
幻灯片
CarlSeger公司20170217.pdf

2017-02-10,10:00,编辑8103

扬声器
侏罗纪黑格
标题
氦中的类型错误诊断(第一部分:约束和启发)
摘要
这是关于我们如何在氦Haskell编译器中进行类型错误诊断的介绍性发言。我们考虑类型系统的基于约束的公式,以及这如何使我们能够构建类型图和启发式方法,这些方法可以在类型图上定义,以寻找错误的原因。
幻灯片
哈格特塔克.pdf

2017-02-03,10:00,编辑hörsal EE

扬声器
卡尔·塞格
标题
正式硬件验证:理论与实践相结合
摘要
现代微处理器包含数十亿个晶体管,实现非常复杂的算法。确保这样的设计是正确的,这是一项艰巨而昂贵的任务。传统仿真很快就不足以完成这项任务,甚至数百万美元的仿真硬件也在与复杂性的竞争中迅速失利。形式硬件验证将离散数学和理论计算机科学概念与有效的启发式相结合,以证明芯片的某些部分完全实现了作为规范提供的功能。在本次演讲中,我将简要讨论正式硬件验证中使用的主要构建块,讨论该技术的当前工业应用,并重点讨论在工业中应用正式验证所涉及的基本要素和基本要素。
幻灯片
FVIN实践.pdf

2017-01-27,10:00,EDIT 8103

扬声器
托尔斯滕·伯杰
标题
虚拟平台-高度可配置系统的灵活且真正的增量工程
摘要
定制是大势所趋。日益多样化的硬件和许多新的软件应用场景,如网络物理系统,要求软件系统支持可变利益相关者需求。通常使用两种相反的方法来创建变体:软件克隆和自有以及软件配置。组织通常从前者开始,前者廉价、灵活,支持快速创新,但会导致冗余,无法扩展。后者通过建立一个集成平台来扩展,该平台在变体之间共享软件资产,但需要高前期投资或高风险的迁移过程。那么,我们是否可以有一种稳健的方法,允许轻松过渡,甚至可以结合这两种方法的优点?
在演讲中,我将讨论虚拟平台,这是一个由VR资助的项目,旨在构建一个方法和工具套件,支持丰富多样的系统的真正增量开发,利用两种对立方法之间的频谱。我将介绍主要的基本思想、富差异系统的重要概念以及项目计划。我还将介绍我之前在可变性建模、模型合成和与项目相关的静态程序分析领域的一些研究。

2017-01-20,11:00,编辑3364

扬声器
Maximilian代数
标题
SpecCheck:Monadic规范和基于属性的网络协议测试
摘要
我们介绍了SpecCheck,这是一种用于并发系统基于属性测试的简单单子规范语言。我们提出了一种利用会话类型的基本结果进行规范的方法,该方法允许将一个规范用作测试预言机和客户端和服务器代码的模型。我们还展示了如何发现不一致的SpecCheck规范。
幻灯片
MaxSlides.pdf

2016-12-09,13:00,编辑8103

扬声器
帕特里克·詹森
标题
顺序决策问题、依赖类型和一般解决方案,
摘要
我们提出了一种计算机检查的通用实现,用于解决有限时域序列决策问题。这是一类广泛的问题,包括跨时间优化、背包、最优包围、调度等。实现可以处理与时间步长相关的控制和状态空间,以及不确定性的一元表示(例如随机、非确定性、模糊或其组合)。这种级别的泛型在具有依赖类型的编程语言中是可以实现的(我们使用了Idris和Agda)。依赖类型也是使我们能够获得实现的核心组件的形式化和计算机检查证明的方法:Bellman的优化原则和相关的反向归纳算法。形式化澄清了反向归纳法的某些方面,并通过明确的概念,如生存能力和可达性,可以作为一元动力系统可控性理论的起点,这在气候影响研究中经常遇到。
幻灯片
20161209_140028.jpg
纸类
网址:http://www.cse.chalmers.se/~patrikj/papers/CompTheoryPolicyAdviceAvoidability_JFP_2016-11_preprint.pdf

2016-12-02,11:00,编辑3364

扬声器
沙扬·内德(Shayan Najd)
标题
生长的树木
摘要
我将讨论我最近与Simon Peyton Jones在Haskell中关于可扩展数据类型的工作。我们研究了函数数据类型中的可扩展性概念,作为用附加信息装饰抽象语法树的新方法。在Glasgow Haskell Compiler(GHC)中重新设计表示Haskel抽象语法的数据类型时,我们注意到了这种扩展性的必要性。具体来说,我们描述了一种编程习惯用法,它利用类型级函数来允许特定形式的可扩展性。该方法可以扩展以支持存在式和广义代数数据类型,并且我们可以使用模式同义词使其在实践中非常方便。
幻灯片
附件:FPDec2016.pdf
纸类
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/trees-that-grow.pdf

2010年6月18日,15时15分至16时15分,编辑室

扬声器
卡琳·凯吉泽
标题
将长石提升到更高水平
摘要
Feldspar[1]是一种用于数字信号处理(DSP)的领域特定语言(DSL),最初设计时考虑了基带通信系统。Feldspar是一种强类型的高级函数语言,在编译过程中,它通过中间核心语言被翻译成特定于硬件的C代码。因为它是一种高级函数语言,与C语言相比,它提高了程序员的抽象级别。
在我的论文中,我专注于为DSP功能开发高级组合器(如有限脉冲响应滤波器),并设计和实现一个矩阵模块,用于在Feldspar中编写变换的代数描述(如离散傅里叶变换)。在这次演示中,我将展示我的结果。
[1]http://alzhar.inf.elte.hu/长石/

2010年6月14日,14时15分至15时15分,ED室

扬声器
Peter A.Jonsson,卢勒理工大学
标题
超级编译和按值调用
摘要
与用命令式语言(如Fortran或C)编写的程序相比,用函数式编程语言编写的清晰简洁的程序通常性能较差。超级编译是一种程序转换,它可以通过删除中间结构和执行程序专门化来缓解许多这些问题。
以前的森林砍伐和超级编译算法在应用于call-by-value程序时可能会导致意外终止。这会向程序员隐藏循环错误,并根据程序是否优化来更改程序的行为。我们提出了一种用于高阶call-by-value语言的超级编译算法,并证明了该算法既终止又保留了终止属性。我们还介绍了同一超级编译算法的一个更强的变体,该变体删除了更多中间结构,并概述了我们当前的工作。

2010年4月16日,15时15分至16时15分,编辑室

扬声器
克拉西米尔·安吉洛夫
标题
作为函数逻辑语言的GF
摘要
语法框架(GF)是一种描述自然语言语法的领域特定语言。尽管GF是一种具有非常特定应用领域的语言,但它也是图灵完备的,可以以一种令人惊讶的方式用于解决重要任务。该语言的设计与其他函数和逻辑编程语言有很多共同点,最显著的是:Agda、Haskell、Curry和Lambda Prolog。Curry是一种有趣的语言,它巧妙地结合了函数和逻辑范式,但从类型理论的角度来看,这并不令人满意,因为它没有利用Curry-Howard同构。由于GF与Agda相关的依赖类型,以及类型系统中的一些其他细节,GF也可以归类为功能逻辑语言,但GF中的两个范式以预期的方式结合在一起。GF的执行模型也与Lambda Prolog有很多共同之处,但为了覆盖GF的全部语义,虚拟机应该以两种模式工作:缩小和剩余。剩余模式在Curry的虚拟机中可以看到,但在Lambda Prolog中无法看到。
在这个研讨会上,我将讨论我在运行GF应用程序的虚拟机上正在进行的工作。虽然还没有一切就绪,但各部分已经开始结合在一起。作为演示,我将展示如何在GF中解决经典的n皇后问题。从逻辑编程范式我使用回溯,从函数范式我使用高效的确定性计算。从类型理论的角度,我定义了所有n皇后谜题的类型。

2010年3月26日,15时15分至16时00分,编辑室

扬声器
安德斯·莫特伯格
标题
用类型推理实现函数语言
摘要
我在高级函数编程课程中实现了一种带有类型推理的小型函数编程语言作为一个项目。类型系统有单位、产品和总和类型。该语言还支持一般递归,并使用按值调用作为求值策略。

2010年3月17日,15时15分至16时15分,EC室

扬声器
Don Syme,微软剑桥研究院
标题
用F进行并行和异步编程#
摘要
F#是一种在现代应用软件开发环境(.NET)环境中简洁而富有表现力的类型化函数编程语言,Microsoft将在Visual Studio 2010中支持F#作为第一类语言。F#对基于虚拟机的平台上下文中的并行、异步和反应式编程有三个主要贡献,如。净值:
(a) 函数式编程大大减少了程序员在许多编程任务中使用的显式变异量
(b) F#包含一个强大的异步构造,用于组合反应式和并行计算,包括并行I/O和CPU计算,以及
(c) async支持在虚拟机上定义和执行轻量级代理,而无需调整线程模型。
在本次演讲中,我们将从总体上看F#,包括一些通用编码,并深入了解这些贡献及其重要性。
Don Syme是剑桥微软研究院的首席研究员,负责F#编程语言的设计。他对的设计做出了广泛贡献。NET平台。NET和C#泛型,具有验证和机器检查证明的背景。他的研究集中在编程语言设计和实现的技术方面,这些技术需要使函数语言更易于使用,能够与其他语言很好地互操作,并且能够结合面向对象、异步和并行编程的各个方面。他的博士学位来自剑桥大学,1998年。

2010年3月5日,15时15分至16时15分,编辑室

扬声器
珍妮·菲利佩·伯纳迪
标题
测试多态性
摘要
(与Koen Claessen和Patrik Jansson联合工作。)
如何测试多态性?问题是,测试只能在特定的单态实例上执行,而参数多态函数预计适用于任何类型。
我们提出了一个为多态属性构造单态实例的模式,这样单个实例的正确性就意味着所有其他实例的正确。我们还给出了模式可用于的多态属性类的形式化定义。与测试此类属性的标准方法相比,我们的模式大大减少了必要的测试用例。
该演讲是Jean-Philippe在ESOP演讲的预览

2010年2月5日,15时15分至16时15分,EC室

扬声器
Satnam Singh,微软研究部
标题
用于异构系统数据并行编程的嵌入式DSL
摘要
本演示介绍了一种用于数据并行编程的嵌入式领域特定语言(DSL),它可以针对x64多核处理器和FPGA电路上的GPU、SIMD指令。该系统是作为一个数据并行数组和数据并行操作库来实现的,使用C++和for实现。NET语言,如C#、VB.NET和F#。我们展示了一组精心选择的约束如何让我们为不同类型的目标生成高效的代码或电路。最后,我们将基于JIT-ing的方法与其他技术进行了比较,例如CUDA(离线方法)以及模板计算。能够以适当的抽象级别将相同的数据并行描述编译到不同的计算元素,这使我们更接近于为异构多核系统寻找计算模型。
萨特南·辛格是微软研究院的高级研究员。他的工作包括FPGA电路的综合研究、使用同步语言的硬件设计、异构多核体系结构以及Haskell中的并发和并行编程。

2010年1月29日,15时15分至16时15分,EC室

扬声器
渣打银行Lennart Augustsson
标题
O、 部分评估者,你在哪里?
摘要
部分评估现在是一个相当古老的想法,已经实施了很多次。部分评估也非常适用;几乎计算中的每个问题都可以使用它。但广泛使用的部分求值器却无处不在。为什么?在这次演讲中,我将举一些例子,说明我在商业上使用Haskell的15年中,在哪里使用了部分求值。我将给出一个我可以实际使用的部分评估者的愿望列表(而不是一遍又一遍地重写),并将其与研究社区的做法进行对比。
Lennart Augusson是一位将编程语言研究转化为实践的人。他目前在渣打银行建模与分析集团工作,设计用于定量建模的特定领域编程语言。他是Cayenne编程语言的作者,也是第一批Haskell编译器之一——HBC的作者,同时也是硬件描述语言Bluespec的合著者。他还是混淆C代码大赛的三届冠军。

2010年1月22日,15时15分至16时15分,编辑室

扬声器
亚历杭德罗·拉索
标题
通过库实现Python中的污染模式
摘要
web应用程序中的漏洞对在线系统构成威胁。SQL注入和跨站点脚本攻击(XSS)是当今最常见的漏洞之一。web社区使用的流行脚本语言(例如Ruby、PHP和Python)提供了一种发现此类漏洞的污染模式方法。Taint模式通常使用静态分析或执行监视器实现。在后一种情况下,Ruby、PHP和Python解释器被修改为包含污染模式。
在本次演讲中,我们用Python提供了一个提供污染模式的库。通过这种方式,可以避免对Python的解释器进行任何修改。装饰器和重载的概念,以及引用的存在,使我们的解决方案轻量级且特别整洁。
本次演讲基于与胡安·何塞·孔蒂(Juan Jose Conti)的工作成果。

2009年12月11日15时15分至16时15分,编辑室

扬声器
埃米尔·阿克塞尔森
标题
Feldspar:用于DSP和并行的功能嵌入式语言
摘要
我将介绍Feldspar,它是一种专门针对数字信号处理应用程序的领域语言。长石嵌入Haskell中。深度嵌入的核心语言是低级的,足以实现高效编译,但也足够灵活,能够支持通过浅层组合符实现的更高级的接口。其中一个接口是向量库,它提供的数据类型与Haskell的列表类型非常相似。我还将介绍我们当前基于向量库实现更多特定于域的组合子的工作。

2009年12月4日,15时00分至16时00分,编辑室

扬声器
珍妮·菲利佩·伯纳迪
标题
参数性和依赖类型
摘要
(与Patrik Jansson和Ross Paterson合作)
在《自由定理》一文中,Phil Wadler展示了如何将系统F的类型转化为逻辑关系。这种转换有效地将类型作为定理提供,您可以使用这些定理在更高的逻辑框架中进行推理。
我将展示这个想法是如何推广到依赖类型的。在这种情况下,源语言强大到足以表示逻辑关系,因此它也可以作为目标语言。一个引人注目的特性是,我们不仅可以“免费”获得定理,还可以得到它们的证明。

2009-11-27,15点-16点,编辑室

扬声器
科恩·克莱森
标题
FUI-一个功能GUI库
摘要
在这次演讲中,我介绍了正在进行的关于FUI的工作(好吧,几个下午黑客攻击后的结果),这是Haskell的一个新GUI库。多年来,Haskell有很多GUI库的设计和实现。有些在精神上是功能性/声明性的(如Fudgets、Gadgets和基于功能反应编程(FRP)的解决方案),另一些则提供命令式(IO)接口(如TkGofer/Yahu、Haggis、WxHaskell和Gtk2H)。FUI的目的是结合Fudgets、Gadgets和FRP(陈述性感觉)的好想法,避免更麻烦的功能(循环组合器,混合布局和功能)。FUI的主要动机是因为对这些东西进行黑客攻击非常有趣,但另一个动机是我试图创建一个GUI库,可以在Haskell的第一年课程中使用。我还将讨论图书馆是否用于教学,以及是否满足了这些要求。

2009年11月20日,15时00分至16时00分,编辑室

扬声器
乔纳斯·杜雷格德
标题
用于QuickCheck的AGATA自动生成器(主项目演示)
摘要
在这次演讲中,我介绍了我硕士论文的主题Agata。Agata自动化了在Haskell中编写测试数据生成器的过程。阿加塔提出了一个新颖的尺寸定义。这解决了一些QuickCheck生成器的可伸缩性问题,其中测试用例的绝对大小以指数形式增长到QuickCheck提供的大小边界。Agata还介绍了分销策略。通过将分布策略应用于生成器,测试人员可以向其注入特定属性,而无需更改生成器的代码。Agata还实现为BNF Converter工具的扩展,可以为任何上下文无关语言自动生成语法正确的测试数据。

2009年11月11日13时15分至14时30分,EDIT室(联合FP+ProgLog通话)

扬声器
巴柝声
标题
左Kan扩张的适用函子
摘要
应用函子定义的接口比单子的接口更通用,相应地也更弱。首先在解析器库中使用,现在可以看到广泛的应用程序。左Kan扩展是函数程序员熟悉的一种存在类型,它是一系列应用函子的来源,这些函子不是单体。还有一种涉及箭头的通用形式,出现在Baars、Loh和Swierstra的置换解析器中。

2009-11-06,15:00-16:00,编辑室

扬声器
乔尔·斯文森
标题
黑曜石:使用Haskell的GPU计算
摘要
Obsidian是一种用于GPGPU(图形处理单元上的通用计算)编程的嵌入式领域特定语言。Obsidian的目标是通过提高抽象级别来简化高效GPU内核(GPU上大型算法的构建块)的实现。不过,程序员应该控制一些对性能很重要的底层概念。本演示将概述黑曜石的当前版本,展示我们方法的一些优点和缺点。

2009-10-30,13:00-14:00,5453室

扬声器
穆罕默德·阿西夫
标题
Cryptol案例研究(主项目演示)
摘要
如今,数字信号处理已成为许多电子应用的一部分;与此相融合,领域特定语言在许多工程领域的实践者中盛行。Cryptol是一种用于密码学的领域特定语言,由Galois设计,自其发明以来,一直由NSA使用。加密是一种加密规范的工艺;然而,该项目旨在评估Cryptol作为数字信号处理算法的特定领域语言。它还包括对Cryptol的扩展的建议,以使其适用于DSP算法。本论文的动机来自DSL对DSP的研究,功能编程小组是从爱立信开始的。该项目涉及在Cryptol中实现一组DSP算法,并从这个新领域的经验中分析Crypto的适用性。这项研究表明,Cryptol对于加密算法来说过于特殊,无法在Cryptol中指定、运行或验证许多DSP算法。然而,有一类特殊的DSP算法,用Cryptol编写要比用C或Java编写容易得多。由于DSL是针对特定问题领域定制的,因此与DSP算法的细微重叠是很自然的。对DSP领域中密码的评估表明,为了使其适用于DSP算法,需要进行一些增强。

2009-10-23,15:00-16:00,编辑室

计划:发现Chalmers的FP活动

本次研讨会旨在揭示我们部门与FP相关的项目。我们还想提出一个HCAR公司条目。如果你正在做与FP相关的事情,在你的项目或教学中使用FP,请大声说出来并加入到HCAR草图区域.

2009年10月16日,15时00分至16时00分,5453室

扬声器
亚历杭德罗·拉索
标题
通过Haskell中的库实现完整性策略
摘要
保护关键数据对计算系统变得越来越重要。多年来,为了实现这一目的,开发了基于语言的技术,从而产生了特殊用途的语言,在大多数情况下,这些语言可以保证数据的机密性,即机密不会泄露。这些语言在实践中的影响相当有限。然而,与从头开始生成一种新的语言相比,已经证明,机密性也可以通过库来保证,这使得这种技术更容易被采用。按照这一思路,本文扩展了一个提供机密性的库,以考虑安全性的另一个重要方面:数据的完整性。数据完整性旨在防止程序意外或恶意地破坏信息。我们描述了如何实施两种不同类型的完整性策略:访问控制(例如,不应写入某些文件)和类似数据的谓词(例如,数据清理),以及关于如何实施信息流完整性策略的一些想法(例如,用户数据不会损坏或影响关键数据块)。以前从未考虑过将机密性和完整性策略结合在一起的库。增强可执行的策略集可以进一步开发库的更改,使其对程序员具有吸引力。为了评估我们的想法,我们建议实施一个案例研究。
本次演讲是基于与阿尔伯特·迪斯霍尔特(Albert Diserholt)的联合工作成果。

2009年10月9日15时00分至16时00分,编辑室

扬声器
沃特·斯威斯特拉
标题
粉笔:建筑设计语言
摘要
在我离开瑞典之前,我想最后谈谈我过去几个月在这里所做的工作。Koen、Mary和我一直致力于设计一种语言来对计算机体系结构进行高级描述。架构设计之所以如此困难,其中一个原因是有许多不同的设计约束:额外的缓存能在多大程度上加快这个设计?缓存将使用多少电量?建筑师缺乏在设计过程早期探索和评估此类设计决策的语言,这正是我们要解决的问题。在本次演讲中,我将简要概述我们的想法,讨论我们实施的一些非标准解释和分析,并向您介绍一些激励性的示例。

2009-10-02,15点-16点,编辑室

计划:在教育部讨论计划生育

我们将讨论函数式编程在该系学生教育中的作用。欢迎学生参加讨论,因为我们希望听取他们的意见。

2009-09-25,15:00-16:00,6128室(后改为EDIT室)

计划:讨论ICFP的一些会谈

参加ICFP的每个人都应该选择2-3次演讲,并能够快速总结并说出自己对演讲/论文的看法。

2009-06-12,15:00-16:00,编辑室

计划:谈论40分钟

扬声器
沃特·斯威斯特拉
标题
数据类型如点菜
摘要
在本次演讲中,我将描述Haskell中的一种技术,用于从孤立的单个组件组装数据类型和函数。如果时间允许,我想展示一下如何使用相同的技术组合自由单体,从而构造Haskell的单片IO单体。

2009年6月4日,10时00分至11时00分,5453室

计划:谈论40分钟

扬声器
珍妮·菲利佩·伯纳迪
标题
测试多态函数:初始视图
摘要
许多有用的函数都是参数多态的。测试只能应用于多态函数的单态实例。如果我们验证一个实例的正确性,那么我们对所有其他实例了解多少?我们提出了一个用于构造单态实例的模式,这样单个实例的正确性就意味着所有其他实例的正确。
这是与Koen Claessen和Patrik Jansson的联合工作。

2009年5月29日,15时00分至16时00分,5453室

计划:谈论40分钟

扬声器
简·罗切尔
标题
非常懒惰的评估
摘要
在演讲中,我将介绍我的毕业论文,其中介绍了一种新的非约束函数式编程语言的执行模型。它依赖于一个新概念,其中函数参数的处理比现有的基于图形还原的模型更为缓慢。这就产生了一种新型的抽象机器,可以保证非常高效的程序执行。概念验证实现证明了该方法的适用性。

2009-05-15,15:00-16:00,编辑室

计划:谈论40分钟

扬声器
安德烈斯·洛赫
标题
具有互递归数据类型的不动点的泛型编程
摘要
许多数据类型泛型函数需要访问数据类型结构中的递归位置,因此对数据类型采用固定的观点。示例包括按照递归结构遍历数据的折叠变量,或支持沿递归位置导航的Zipper数据结构。然而,具有代数数据类型的欣德利·米尔纳(Hindley-Milner-inspired type)类型系统使得很难表示除常规数据类型以外的任何数据类型的固定点。许多实际示例(如抽象语法树)实际上是相互递归数据类型的系统,因此被排除在外。在演讲中,我将介绍一种技术,该技术允许为相互递归的数据类型的系统提供定点视图。我还将提供示例,其中最突出的是Zipper,以证明该方法广泛适用。

2009-05-08,15:00-16:00,编辑室

计划:谈论40分钟

扬声器
尼尔·琼斯
标题
非类型lambda-Calculus的终止分析
摘要
开发了一种算法,在给定非类型化lambda-expression的情况下,可以证明其按调用值计算将终止。它是先前应用于一阶程序的“大小改变原则”的扩展。该算法是合理的(已被证明是正确的),但并不完整:一些lambda-expressions实际上可能会在按调用值计算时终止,但不会被识别为终止。
大小更改终止的内涵力相当高:它可以终止所有原始递归程序,以及许多有趣且有用的通用递归算法,包括具有相互递归和参数交换的程序,以及Colson的“最小”算法。此外,该方法允许自由使用Y组合符,因此可以识别为终止PCF的实质子集。
基于Neil D.Jones和Nina Bohr,DIKU,哥本哈根大学和哥本哈根IT大学的论文“非类型lambda-Calculus的终止分析”

2009年4月24日,15时00分至16时00分,5453室

计划:尼克演讲,40分钟,包括问题

扬声器
尼克·斯莫尔博内
标题
QuickSpec:免费的正式规范
摘要
我将讨论QuickSpec,这是一个由Koen、John和我开发的工具,它可以从函数程序中生成代数规范。QuickSpec不使用定理证明,只使用基于测试的简单技术。

2009年4月3日,15时00分至16时00分,5453室

计划:Ulf演讲,40分钟,包括问题

扬声器
乌尔夫·诺雷尔
标题
一种依赖类型的数据库绑定
摘要
与数据库的接口是系统开发中的一项常见任务,任何自重的编程语言都会附带库来完成这项任务。然而,这些库在大多数情况下都是非类型化的——发送到数据库的查询要么是字符串,要么是一些与查询数据库的实际布局无关的简单结构化表示。一个例外是HaskellDB库,它支持与数据库的良好类型交互,但需要在编译时运行工具来生成与数据库表对应的Haskell类型。
我将根据Nicolas Oury和Wouter Swierstra(2008)[1]的想法,为Agda展示一个简单的依赖类型数据库库,其中的查询可以保证与所查询的数据库相关的类型良好,并且不需要在编译时查询数据库。它还支持在程序执行期间更改数据库布局。
[1] Oury和Swierstra,《Pi的力量》。ICFP 2008。

2009年3月27日,15时00分至16时00分,5453室

计划:约翰演讲,40分钟,包括问题;关于网站的讨论

扬声器
约翰·休斯
标题
eqc_fsm:QuickCheck中的状态机规范
摘要
我将讨论eqc_fsm,这是作为ProTest项目的一部分为Quviq的QuickCheck开发的一个新模块。它是为将状态机图按照UML状态图的方式表示为QuickCheck规范而设计的。与QuickCheck以前的状态机支持相比,eqc_fsm允许更简洁、更不容易出错的规范,并可以帮助分析生成的随机测试的分布,实际上,自动分配合适的权重,以实现测试用例的“最佳”分布——不管这意味着什么,这本身就是一个有趣的问题。

2009年3月20日,15时00分至16时00分,5453室

扬声器
米查·帕·卡
标题
使用QuickCheck和PULSE查找Erlang中的比赛条件
摘要
我将介绍一个用户级调度器,该调度器与QuickCheck和跟踪可视化工具相结合,可用于调试并发Erlang程序,从而在单元测试中很容易发现并发错误。

2009-03-13,15:00-16:00,编辑室

计划:两次20分钟的谈话

谈话1

扬声器
珍妮·菲利佩·伯纳迪
标题
纯功能增量分析
摘要
我将总结为Yi编辑器开发的解析库中使用的技术。然后,我建议详细说明如何在组合器库中组合增量解析和惰性解析。

谈话2

扬声器
帕特里克·詹森
标题
C++中的泛型库,包含Haskell中高级域描述的概念-用于计算漏洞评估的特定域库
摘要
请参见计算漏洞评估

2009-03-06,15:00-16:00,编辑室

计划:一次60分钟的谈话

谈话

扬声器
沃特·斯威斯特拉
标题
Hoare State Monad酒店
摘要
单子有助于构建功能性程序。然而,对单子程序的证明往往是从扩展返回和绑定的定义开始的。这似乎相当浪费。如果我们在编写程序时利用了这种结构,为什么在编写校样时要丢弃它?我将展示如何验证驻留在状态单体中的功能程序,其明确目的是利用程序的单体结构来指导验证过程。
检索自https://wiki.portal.chalmers.se/cse/pmwiki.php/FP/FPWeeklyMeeting网站
页面上次修改时间:2023年10月23日上午11:38