!%使用概念将C++中的%泛型库居中
!%中心%来自Haskell中的高级域描述
!!%中心%A域特定库
!!%计算脆弱性评估中心%
丹尼尔·林克(Daniel Lincke)、帕特里克·詹森(Patrik Jansson)、马金·扎勒夫斯基(Marcin Zalewski)和塞扎尔·艾内斯库(Cezar Ionescu)
!!!摘要
一类密切相关的问题,即问题域,通常可以用特定领域的语言来描述,该语言由用于解决该类特定问题的算法和组合器组成。这种语言可以分为两种:它可以形成一种新的语言,也可以作为一种子语言嵌入到现有的语言中。我们以扩展通用语言的库的形式描述嵌入式DSL。波茨坦气候影响研究所(Potsdam Institute for climate Impact Research)正式描述了我们的领域是气候变化背景下的脆弱性评估。域是使用Haskell描述的,产生了一种特定于域的Haskells子语言,可以用于实现的原型制作。
在本文中,我们提出了一个通用的C++库,该库基于正式的Haskell描述,实现了一种用于漏洞评估的领域特定语言。该库仅基于并实现了几个概念,最重要的是,一元系统的概念,这是脆弱性评估正式化的关键部分。我们描述了一元系统的Haskell描述,并展示了描述到通用C++组件的映射。我们的库在很大程度上依赖于概念,这是一种支持泛型编程的C++功能:概念框架形成了我们库的领域特定类型系统,参数化的类型和函数,由我们概念框架中的概念“类型化”,代表了领域的组合子和算法。此外,我们还讨论了是什么使我们的库成为特定领域的语言,以及如何将特定领域的库方案用于其他领域(涉及语言设计、软件设计和实现技术)。
----