F#是关于思维和表达的清晰性-"体现了计算思维"-受到学术界和研究人员的喜爱,因为F#将学术界开发的清晰,简洁的问题解决技术付诸实践. F#既基于学术研究,又为全球成千上万的学生和研究人员提供了灵感. 学术文献中已经描述了许多标准的F#功能(包括活动模式异步工作流 ),并且许多研究项目都建立在F#之上.

How to reference F# in a research paper.

要将论文添加到此列表,请登录GitHub, 编辑此页面并提交拉取请求.


Information-rich programming

Types from data: Making structured data first-class citizens in F#

Tomas Petricek,Don Syme,Gustavo Guerra
PLDI 2016杰出论文奖

大多数现代应用程序都与外部服务交互,并以XML,JSON和CSV等结构化格式访问数据. 静态类型的系统不了解这种格式,通常使数据访问变得更加麻烦. 我们是否应该放弃并将外部数据的混乱世界留给动态类型和运行时检查? 当然不是!

在本文中,我们将外部结构化数据集成到F#编程中. 由于大多数现实世界数据都不带有显式架构,因此我们开发了一种形状推断算法,该算法可从代表性样本文档中推断出形状,并使用类型提供程序将形状转换为F#类型. 我们提供了此过程的简化版本的形式化和相对类型健全性定理.

与广泛使用的弱类型技术相比,我们的库大大减少了数据访问代码的数量,并提供了额外的安全保证.

F# 3.0 - Strongly-Typed Language Support for Internet-Scale Information Sources

Don Syme et al.
MSR技术报告

编程的理论和实践的增长趋势是编程与丰富的信息空间之间的相互作用. 从数据库到Web服务,从语义Web到基于云的数据,将编程与异构,连接,结构丰富,流式传输和不断发展的信息源集成在一起的需求日益增长. 大多数现代应用程序都将一个或多个外部信息源作为组成部分.

提供强类型访问这些源是强类型编程语言的关键考虑因素,以确保信息访问中的低阻抗失配. 在这种规模上,基于库设计和代码生成的信息集成策略是手动的,笨拙的,不能处理企业,Web和云环境中现在遇到的Internet规模的信息源.

在此报告中,我们描述了F#3.0中类型提供程序机制的设计和实现及其在带有Web本体,Web服务,系统管理信息,数据库映射,数据市场,内容管理系统,经济数据和托管脚本的类型化编程中的应用. 类型健全性相对于类型提供者的健全性和信息源中模式的变化而言,但是类型在信息丰富的编程任务中的作用得到了极大的扩展,特别是通过在探索性编程中受益于丰富类型的工具.

Themes in Information-Rich Functional Programming for Internet-Scale Data Sources

Don Syme等.
DDFP 2013

F#语言包含一个称为F#3.0类型提供程序的功能,以支持将Internet规模的信息源集成到强类型的功能优先编程环境中. 在本立场文件中,我们描述了我们在这项工作中观察到的信息丰富的函数式编程中的关键主题. 我们的贡献是在最近发布的,实用的,开源的,用于信息丰富的功能编程的系统的背景下,记录这些主题并突出未来的挑战和机遇. 我们认为,该领域为未来的语言和工具研究,信息空间集成和方案化技术提供了绝佳的机会.


Asynchronous, Concurrent and Reactive programming

The F# Asynchronous Programming Model

唐·赛姆(Don Syme),托马斯·佩特里切克(Tomas Petricek),德米特里·洛莫夫(Dmitry Lomov)
PADL 2011会议录

我们描述了F#中的异步编程模型及其在反应式,并行和并发编程中的应用. 关键功能将核心语言与非阻塞模式相结合,以编写轻量级异步任务,其中该模式具有控制流结构,这些结构在语法上是核心语言的超集,并提供了异步语义解释. 这允许在同步代码和异步代码之间进行平滑过渡,并消除了对控制反转的回调样式处理,而不会干扰CPU密集型编程的基础,该基础使F#可以流畅地互操作并有效地编译为.NET和本机代码.

Collecting Hollywood’s Garbage: Avoiding Space-Leaks in Composite Events

托马斯·佩特里切克(Tomas Petricek),唐·塞米
ISMM 2010论文集

由于我们无法完全控制应用程序的控制流程,因此反应式编程模型与我们习惯的模型大不相同. 如果我们混合使用声明性和命令性编程风格(这在ML语言系列中很常见),情况就更加复杂了. 在普通对象的垃圾收集器无法自动处理我们直观上认为是垃圾的所有组件时,很容易引入模式.

在本文中,我们讨论了对象和事件的垃圾定义之间的对偶. 我们将它们组合为一个,以混合功能/命令式语言为反应性编程模型指定垃圾的概念,并提出了一种在此环境中收集垃圾的正式算法.

在理论模型的基础上,我们实现了用于反应式编程的库,该库在混合声明式/命令式模型中使用时不会引起泄漏. 该库使我们能够安全地组合两种反应式编程模式. 结果,我们可以利用声明性方法的清晰性和简单性以及命令性模型的可表达性.


Functional programming

Extensible pattern matching via a lightweight language extension

Don Syme,Gregory Neverov,James Margetson ICFP 2007会议录

代数数据类型(ADT)的模式匹配是类型化功能编程语言中的标准功能,但众所周知,它与抽象的交互作用较差. 尽管已经提出了针对该问题的几种部分解决方案,但是几乎没有实现或使用. 本文描述了对.NET语言F#的扩展,称为活动模式,该模式支持对通用异构数据(例如XML和术语结构)的抽象表示进行模式匹配,其中包括通过其他.NET语言的对象模型表示的模式. 我们的设计是第一个结合临时模式匹配功能(用于部分分解)和"视图"(用于整体分解)的设计,并且仍然是一个简单轻巧的扩展. 我们给出语言扩展的描述以及许多激励性的例子. 最后,我们描述了此功能如何与其他合理且相关的语言扩展进行交互:在数据识别标签,GADT和模式匹配的一元化概括中量化的存在性类型.

Initializing Mutually Referential Abstract Objects: The Value Recursion Challenge

唐·塞姆
ML Workshop 2006论文集

对象之间的相互依赖关系在程序中经常出现,程序员通常必须通过手动填充"初始化漏洞"来解决此值递归,以帮助构造相应的对象图,即空值和/或明确可变的位置. 本文旨在通过描述类似于ML的语言中广义形式的值递归的半安全机制的描述,来扩展有关值递归的正在进行的理论工作,其中初始化对应于懒惰计算的图,其节点被顺序强制,需要运行时以Russo样式检查初始化期间的健全性. 我们的主要贡献是使用该机制来开发令人信服的示例,这些示例说明了缺少值递归如何在存在抽象边界的情况下导致实际问题,并给出了微观示例,这些示例描述了初始化图如何允许更多程序在突变中表达的特征- ML的免费片段. 最后,我们认为,在异构编程环境中,值递归的半安全变体可能适用于类似ML的语言,因为来自外部库的初始化效果难以表征,记录和控制.

Extending Monads with Pattern Matching

Tomas Petricek,Alan Mycroft和Don Syme
Haskell研讨会论文集2011

可以使用monad巧妙地捕获有效计算的序列,并使用do标记优雅地编写. 在实践中,此类单子通常允许使用其他组成计算的方式,必须使用组合器明确编写这些方式.

我们确定joinads,这是一种抽象的计算概念,它比monads强,并且捕获了许多此类临时扩展. 特别是,joinads是具有三个附加操作的monads:一种类型ma-> mb- ma -> mb -> m (a, b)捕获各种形式的并行组成,一种类型ma-> ma- ma -> ma -> ma受选择启发,一种类型类型ma -> m (ma)捕获计算的别名. 代数上,前两个运算通过交换乘法形成近半.

我们介绍了docase符号,可以将其看作case的单子case . 乔纳德定律使得证明用docase编写的程序的各种句法等效成为可能,类似于case等效. 受益于这种表示法的Joinad的示例包括推测性并行性,等待用户界面事件的组合以及使用解析器的交集对验证规则进行编码.

Try Joinads Demonstrator

Joinads是F#中F#计算表达式语法(也称为monadic语法 )的通用研究扩展,主要用于并发,并行和反应式编程. 该扩展添加了一个新的表示法,即书面match! 可以用于使用非确定性选择,并行组合和混叠来进行计算.

尝试Joinads的最佳方法是访问TryJoinads.org网站,该网站包含许多教程,可以在能够运行Silverlight(MacOS和Windows)的Web浏览器中对其进行测试.

Evaluation strategies for monadic computations

托马斯·佩特里切克(Tomas Petricek)
MSFP 2012论文集

Monad已成为结构化函数式编程中有效计算的强大工具,因为它们使效果的顺序明确. 将纯代码转换为单子版本时,我们需要明确指定评估顺序. 这要求我们在按值 调用按名称调用样式之间进行选择. 两种翻译为程序提供了不同的语义,结构和类型.

在本文中,我们使用抽象了评估策略的附加运算malias将纯代码转换为malias . malias操作基于计算模型 ; 我们使用分类框架来指定操作所需的法律.

我们展示了任何monad的malias两种实现,它们给出了按值 调用和按名称调用的语义. 尽管我们没有给出任何monad的按需调用语义,但是我们展示了如何将任何monad转换为具有by-need-by语义的扩展monad,这在一定程度上回答了一个长期存在的问题. 此外,使用我们的统一翻译,可以更改翻译为单子形式的功能代码的评估策略,而无需更改其结构或类型.

Joinads: a retargetable control-flow construct for reactive, parallel and concurrent programming

托马斯·佩特里切克(Tomas Petricek)和唐·西姆(Don Syme)
PADL 2011会议录

Modern challenges led to a design of a wide range of programming models for reactive, parallel and concurrent programming, but these are often difficult to encode in general purpose languages. We present an abstract type of computations called joinads together with a syntactic language extension that aims to make it easier to use joinads in modern functional languages.

我们的扩展概括了模式匹配以用于抽象计算. 它保留了模式匹配的语法和语义,即使在非标准编程模型中,也可以轻松推理代码. 我们使用三个重要的编程模型来演示我们的扩展-基于事件的反应模型; 基于联接演算的并发模型和使用期货的并行模型. 所有这三个模型都作为受益于我们语法扩展的库而实现. 这使它们更易于使用,也为探索新的有用编程模型提供了空间.

The F# Computation Expression Zoo

托马斯·佩特里切克(Tomas Petricek),唐·塞米
PADL会议录2014

可以使用抽象计算类型来构造许多计算,例如,monoid,monad变换器或应用函子. 函数式程序员直接使用这些抽象,而主流语言通常将具体实例集成为语言功能-例如,Python中的生成器或C#5.0中的异步计算. 问题是,便利的,硬连接的语言功能与不方便但灵活的库之间是否有一个最佳的结合?

F#计算表达式肯定地回答了这个问题. 与Haskell中的do表示法不同,计算表达式不限于一种抽象. 它们支持各种计算,具体取决于可用的操作. 它们还提供了更大的语法灵活性,从而导致了更直观的语法,而无需诉诸基于宏的完整元编程.

我们证明了计算表达式可以构造众所周知的计算,包括基于列表monad转换器的单项式列表理解,单子语法分析器,应用形式和异步序列. 我们还提出了能够捕获所有这些应用程序的计算表达式的输入规则.

Classes for the Masses

Claudio Russo,Matthew Windsor,Don Syme,Rupert Horlick,James Clarke ML 2016年会议录

类型类是Haskell的一种非常流行和高效的功能. 此后,它们已被包括定理证明在内的许多其他语言采用并改编. 我们证明类型类在.NET中具有自然而有效的表示形式,这为使用类型类扩展F#,C#和其他.NET语言铺平了道路. 我们的编码是类型保留的,并保证轻松,安全的跨语言互操作. 我们扩展了开放源代码C#编译器和语言服务Roslyn,为类型类提供了广泛的支持,并为F#设计了更为简约的设计.


DSLs and Meta-programming

Leveraging .NET meta-programming components from F#: integrated queries and interoperable heterogeneous execution

唐·塞姆
2006年关于ML的研讨会论文集

自LISP发明以来,语言集成元编程和可扩展编译一直是编程语言的主题. 这些技术的最新实际应用是使用小型元程序来指定数据库查询,如
.NET的LINQ扩展. 重要的是,出于实用性的考虑,以及作为朝着对这些问题应用更严格,正式的方法的第一步,诸如F#之类的.NET语言能够利用LINQ和相关组件提供的功能来进行异构执行. 本文探讨了对F#的适度元编程扩展的使用,以访问和利用LINQ和其他组件的功能. 我们通过使用LINQ / SQLMetal库演示语言集成的SQL查询的实现来实现. 我们还概述了其他两个应用程序:通过Accelerator库在GPU上执行数据并行引用的F#程序,以及通过LINQ进行动态本机代码编译.

The F# Computation Expression Zoo

Tomas Petricek和Don Syme参加2014年PADL会议

可以使用抽象计算类型来构造许多计算,例如,monoid,monad变换器或应用函子. 函数式程序员直接使用这些抽象,而主流语言通常将具体实例集成为语言功能-例如,Python中的生成器或C#5.0中的异步计算. 问题是,便利的,硬连接的语言功能与不方便但灵活的库之间是否有一个最佳的结合?

F#计算表达式肯定地回答了这个问题. 与Haskell中的do表示法不同,计算表达式不限于一种抽象. 它们支持各种计算,具体取决于可用的操作. 它们还提供了更大的语法灵活性,从而导致了更直观的语法,而无需诉诸基于宏的完整元编程.

我们证明了计算表达式可以构造众所周知的计算,包括基于列表monad转换器的单项式列表理解,单子语法分析器,应用形式和异步序列. 我们还提出了能够捕获所有这些应用程序的计算表达式的输入规则.

Rapid Prototyping of DSLs with F#

Adam Granicz 中欧功能编程学校(CEFP)

In these lecture notes we present the F# implementation of a small programming language we call Simply. We give the parser implementation using active patterns, F#’s unique feature for extensible pattern matching, which as we demonstrate provide an elegant and type-safe mechanism to embed parsers as an alternative approach to parser generators. We also build an evaluator, and extend the core Simply language with Logo-like primitives and build a graphical shell environment around it. As a warm-up, we give a rudimentary survey of some notable F# features, including sequence expressions and active patterns.


Parallel and Distributed programming

MBrace: cloud computing with monads

Jan Dzik,Nick Palladinos,Konstantinos Rontogiannis,Eirik Tsarpalis,Nikolaos Vathis 在PLOS '13编程语言和操作系统第七次研讨会第7条的预备过程中

随着云计算和大数据在当今的经济环境中日益突出,在分布式环境中有效表达复杂算法的挑战变得越来越重要. 在本文中,我们描述MBrace. 一种新颖的编程模型/框架,用于在云中执行大规模计算. 基于.NET软件堆栈,它利用了F#编程语言的强大功能. MBrace引入了一种声明性样式,用于在所谓的云工作流或云monad中指定和组成并行模式. MBrace还是一个分布式执行运行时,可处理数据中心中云工作流程的编排.

Implementation of MBrace for large-scale cloud computing

Konstantinos Rontogiannis 文凭论文,雅典国立技术大学,电气与计算机工程学院,2015年

这篇毕业论文的目的一方面是对MBrace的描述;另一方面是对MBrace的描述. 一个用于执行大规模分布式计算的编程模型,另一方面在Microsoft Azure云计算平台上实现MBrace.

在大数据和云计算时代,对分布式计算进行高效,高效的编排成为了必要. 云计算提供商使某人可以轻松访问所需的计算资源.

对大型分布式系统进行编程是一项非常困难的任务,需要管理和协调多个并发进程,软件和硬件故障,可伸缩性和弹性.

在本文凭论文中,我们描述了MBrace. 大规模云计算的编程模型. 基于F#编程语言和.NET框架堆栈,MBrace提供了一个声明式,表达性和丰富的模型,用于创建和组合分布式计算. 这种模式也称为云工作流或云monad. 最后,我们在Microsoft Azure平台之上实现了该模型,提供了MBrace.Azure:用于云计算的分布式执行运行时.

Specifying and Executing Optimizations for Parallel Programs

威廉·曼斯基(William Mansky),丹尼斯·格里菲斯(Dennis Griffith),艾尔莎·L·甘特(Elsa L.Gunter)参加GRAPHITE '14

编译器优化通常表示为程序图上的重写,是所有现代编译器的核心部分. 但是,即使是生产编译器也存在错误,并且难以检测和解决这些错误. 这个问题只会在编译并行程序时变得更加复杂. 从图形表示的选择到竞争条件的可能性,优化设计人员需要考虑很多因素,这些因素在处理单线程程序时不会出现. 在本文中,我们介绍了PTRANS(一种用于编译器转换的正式规范的领域特定语言),并描述了其可执行语义. PTRANS的基本方法是将程序转换描述为具有时间逻辑方面条件的对控制流程图的重写. PTRANS的语法允许更清晰,更易理解的程序优化规范; 它的可执行语义允许这些规范充当优化本身的原型,因此可以在将候选优化包含在编译器中之前对其进行测试和优化. 我们演示了使用PTRANS声明,测试和完善并行程序上冗余存储消除优化的规范.

Prajna: Cloud Service and Interactive Big Data Analytics

Jin Li, Sanjeev Mehrotra and Weirong Zhu

在本文中,我们描述了分布式功能编程平台Prajna. Prajna构建于.Net和F#之上,并且是开源发布的. Prajna不仅支持(和扩展)Spark等大型集群上的内存中数据分析,而且还支持云服务的开发和部署. 此外,我们证明Prajna可以协调云服务和数据分析服务,并在任何现有的云服务/应用程序上添加丰富的数据分析. Prajna支持在托管代码和非托管代码中运行云服务和交互式数据分析,并支持具有大量数据组件(例如,大小为数百兆字节的识别模型)的远程代码运行.


Units of Measure

Relational parametricity and units of measure

可以扩展用于使用数字类型编程语言的类型系统,以支持度量单位的检查. 然后对单位进行量化会引入一种新的参数多态性,并具有相应的雷诺式表示独立性原则:程序的行为在所使用的单位发生变化时是不变的. 我们证明了这种"尺寸不变性"结果,并描述了四种结果. 首先是表达式的类型可用于导出描述其缩放比例特性的方程式(类似于系统F的Wadler的"免费定理"). 其次,某些类型只用琐碎的术语居住. 例如,我们证明了不能仅使用常规算术原语来编写完全多态的平方根函数. 第三,我们展示了类型之间有趣的同构,对于一阶类型,这些同构与经典维分析的中心定理相关. 最后,我们建议对于行为在维度上不变的任何表达式,都存在一个等效的表达式,其类型反映了这种行为,其结果将是该语言模型的完整抽象结果.

Programming Languages and Dimensions

安德鲁·肯尼迪(Andrew Kennedy) 博士论文,剑桥大学,1995年

Types for Units-of-Measure: Theory and Practice

Andrew Kennedy 演讲笔记,适用于CEFP'09,2010年7月修订


Web programming

Visualizing Data in the Web

Loic Denuziere,Adam Granicz,Anton Tayanovskyy 2013年数据驱动功能编程(DDFP)

Composing Reactive GUIs in F# Using WebSharper

Joel Bjornson,Anton Tayanovskyy和Adam Granicz 第22届功能语言的实现和应用研讨会(IFL)

我们提供了一个通用库,用于以声明式样式构造可组合和交互式用户界面. 本文介绍了流程,流程的扩展是提供交互性的形式. 使用当前实现提供了真实世界的示例,该实现将使用WebSharper将F#中定义的流程编译为JavaScript的F#


Security and Verification Research

实验性的FStar语言受F#启发. 有关FStar的一些出版物如下.


Applications

有关F#的更多应用程序,请参见" 推荐"页面. 以下是一些与F#的应用相关的同行评审出版物或学术演讲.

Learning with F#

Phil Trelford,《函数编程的商业用户》 ,2006年.本演讲描述了Microsoft Research Cambridge的Applied Games组如何使用F#. 该小组由七人组成,专门研究统计机器学习的应用,尤其是排名问题. XBox Live团队使用他们开发的排名系统对游戏日志进行服务器端分析,并且他们最近参加了内部竞争,以提高Microsoft adCenter的"点击率"预测率,该行业价值数百万美元.公司. 这些工具分析的数据量令人震惊:例如,在一种情况下为3TB,程序连续运行了四个星期的训练数据,并占用了我们使用的64位16GB机器上的所有物理内存.

F#在帮助团队有效地处理数据和开发智能算法方面发挥着至关重要的作用,该算法可以使用最新的称为"因子图"的统计技术从数据中提取基本特征并表示信息. 我们将F#与SQL Server 2005结合使用特别有趣:我们使用新颖的编译技术来表达F#中的主要架构,然后将SQL Server用作数据从属.

Developing an F# Bioinformatics Application with HTML5 Visualization

Adam Granicz,IntelliFactory 函数式编程商业用户(CUFP)2012

随着基于专有插件的容器(如Flash或Silverlight)逐渐失去市场地位,越来越多的Web应用程序开始寻求Web标准合规性,并利用HTML5来提供丰富的交互式客户端功能和最终用户体验. 确实,现代浏览器继续投入大量资金来建立对各种HTML5功能的标准支持,使HTML5成为不断增长的Web开发人员的合适选择.

今年早些时候,我们在IntelliFactory上完成了一个试点项目,任务是使用F#和我们的WebSharper技术创建一个定制的,创新的,高度互动的生物信息学Web应用程序. 该应用程序旨在为生物信息学研究界服务,并提供特定细菌基因序列的交互式可视化功能,以及可用于进一步研究和实验室使用的各种突变. 该应用程序消耗了大量生物数据,并集成了各种高级HTML5可视化效果,例如完整的功能基因本体论,KEGG正交学和表型图,从而使其成为研究人员和实验室工作人员的有用网络资源.

我将介绍有关开发此生物信息学应用程序的经验报告,与我们在开发过程中提炼的基于客户端的可视化项目相关的实践和准则,在开发过程中遇到的挑战以及如何解决这些挑战. 许多生物信息学算法都适用于功能编程,但是作为具有高级可视化功能的功能完善的Web应用程序,该项目产生了很多细节,我们希望对其他与会者有帮助.

BumbleBee: A Transformation Environment for Spreadsheet Formulae

Felienne Hermans, Danny Dig

电子表格已广泛用于工业中. 据估计,最终用户程序员的数量要比普通程序员高出5倍.但是,电子表格很容易出错:由于电子表格错误导致公司亏损的报告很多. 我们断言,导致这些问题的一个因素是难以对电子表格公式进行一致的编辑.

The First Substantial Line of Business Application in F#, video

Adam Granicz,IntelliFactory,Alex Peake,Veracentra 函数式编程的商业用户(CUFP)2009

我们开发了MarketingPlatform™,这是一种营销自动化解决方案,以F#为主要语言,以软件即服务的形式提供. MarketingPlatform™是针对直接营销和渠道营销中的营销人员的解决方案,他们希望及时,深入地了解其营销活动中哪些有效,哪些无效. 然后,利用这种见解为每个人创建相关的交流,从而促进营销人员执行和交付活动. 它分为度量,分析,设计和执行四个紧密集成的活动管理步骤.

Applying Functional Programming to Build Platform-Independent Mobile Applications

Adam Granicz,IntelliFactory 函数式编程商业用户(CUFP)2011

近年来,本机移动应用程序取得了巨大的成功,而在各种移动应用程序商店(如Apple的App Store或Google的Android Market)中看到的数量惊人. 随着构建这些应用程序的技术的成熟和市场的饱和,移动操作系统供应商正努力寻找跟上并确保指数级市场增长的方法. 阻碍因素包括特定于平台的开发环境,编程语言和应用程序的构建块; 对开发人员不利的许可,政策和订阅; 和受控的应用程序分发渠道.

这些问题引起了许多有希望的替代方案和技术,旨在跨各种移动平台进行桥接,并允许在针对不同移动OS的应用程序版本之间共享部分或全部代码. 出现了两个主要方向:针对从主流语言(例如C#和Java)生成移动代码,以及使用平台无关的UI抽象和增强对底层设备功能的访问来拥抱Web应用程序. 尽管启用前者的技术是一个有趣的话题,但我们认为后者不仅对移动应用程序有影响,而且对台式机也有影响,并且找到在这些基于Web的应用程序的开发中利用函数式编程的方法具有巨大的意义.对手机和台式机的影响.

在本次演讲中,我将重点介绍我们在IntelliFactory上正在做的一些工作,以支持在F#中构建与平台无关的移动应用程序. 这项工作利用了我们的市售WebSharper框架,该框架是F#的首屈一指的功能性Web开发框架,拥有成千上万的活跃用户和合作伙伴公司,并利用一些关键的功能编程抽象来对一流的,类型安全的,可组合的Web应用程序和用户界面进行建模. . 我将简要概述元编程基础结构,该基础结构使我们能够将任意JavaScript库加入F#的类型安全领域,以及更易于推理和应用代码转换和优化的基础CoreJS语言.

在演讲结束时,我将简要介绍我们即将在Cloud中提供的F#,以及它如何帮助无缝扩展到具有巨大服务器计算需求的云桌面和移动Web应用程序.

GLR-based abstract parsing, video (in russian)

圣彼得堡国立大学Semen Grigorev,圣彼得堡国立大学Iakov Kirilenko

俄罗斯中东欧软件工程大会(CEE-SECR '13)2013

抽象解析是处理动态构造的语句或嵌入字符串的语言(例如嵌入式或动态SQL)的重要步骤. 现有的基于LALR的算法存在性能问题. 为了提高性能,我们建议使用GLR算法作为抽象解析的基础,并重用图结构的堆栈和共享打包的解析森林. 提出了用于抽象解析的RNGLR算法修改.

by  ICOPY.SITE