Questions tagged «imperative-programming»


2
线性逻辑的民间模型是什么?
线性类型在PL中最常见的应用可能是使用它们来提供控制别名的语言(即,线性值或多或少都具有指向它的单个指针)。 但是这种用法和线性逻辑的典型称谓模型之间存在一些不匹配。IIRC的Benton表明,如果笛卡尔封闭类别具有很强的可交换单子,那么其代数类别将是对称单曲面封闭(即线性逻辑模型)。但是该定理不适用于别名控制用法,因为状态monad不是可交换的。确实,在过去的几年中,辛普森和他的同事们给出了一般强单子的计算,而线性单子不是术语计算。 所以我的问题是,带有状态的线性语言的指称语义是什么?是否存在一个非退化(即张量不是笛卡尔乘积)对称单项封闭类别,可以在其中建模分配,读取和线性更新?

4
语义如何处理副作用?
在Anthony Aaby的“ 语义学编程语言简介”部分中,他做了以下观察: 编程语言的语义方面的许多工作是由尝试构建和理解命令式程序(带有赋值命令的程序)时遇到的问题所激发的。由于赋值命令会将值重新分配给变量,因此赋值可能在程序的远处产生意外的影响。 这让我印象深刻,承认允许副作用会激发语义工作的大部分。 编程语言中副作用的存在如何影响将程序映射到计算模型的能力?是否有管理状态的方法可以改善此过程,同时仍然允许副作用?

4
命令性语言与功能性语言之间的区别是什么?
我正在阅读西蒙·佩顿·琼斯(Simon Peyton Jones)的《函数式编程语言的实现》,有一个说法让我有些惊讶(第39页): 与命令式语言相比,功能语言在很大程度上是彼此的语法变体,语义上的差异相对较小。 现在,它写于1987年,我对此主题的想法可能会受到当时不流行或不流行的现代编程语言的影响。但是,我发现这有点难以置信。例如,我认为所描述的Miranda编程语言(Haskell的较早版本)与严格的语言(如ML)相比,语义要多得多,而不是说C必须进行Pascal甚至C进行小规模的交谈(尽管我承认C ++对他的观点提供了一些验证:-)。 但是话又说回来,我是基于我的直觉理解。西蒙·佩顿·琼斯(Simon Peyton Jones)的说法是否正确,还是有争议的观点?

3
赋值以外的命令性语句的类型推断
在搜寻有关命令式语言的类型系统的研究论文时,我只找到一种具有可变引用但没有真正的命令式控制结构(例如复合运算符,循环或条件)的解决方案。 因此,尚不清楚如何实现具有部分类型推断的命令式语言(例如http://rust-lang.org)。 这些论文没有提到参数化类型,例如,List of a因为参数化类型是Hindley-Milner类型系统的琐碎扩展-仅应扩展统一算法,其余推论照原样工作。但是,由于出现了自相矛盾,不能轻易添加分配,因此必须应用诸如ML值限制之类的特殊技术。 您能否推荐描述具有命令性循环,条件,IO和复合语句的语言的类型系统的论文或书籍?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.