Questions tagged «pl.programming-languages»

编程语言尤其关注其语义。

4
依赖类型理论中的对象建模(OOP)
我对依赖类型理论中的面向对象编程中的对象建模感兴趣。作为一个可能的应用程序,我希望有一个模型,可以描述命令式编程语言的不同功能。 我只能找到一篇关于依赖类型理论中的对象建模的论文,即: A. Setzer(2006)的依赖类型理论中的面向对象编程。 是否有我遗漏的主题的更多参考文献,或者是否有更新的参考文献? 是否可以为定理证明者(例如Coq或Agda)提供实现(即证明)?

2
零类型的方程式定律是什么?
免责声明:虽然我很关注类型理论,但我并不认为自己是类型理论的专家。 在简单类型的lambda演算中,零类型没有构造函数,并且具有唯一的消除符: Γ⊢M:0Γ⊢initial(M):AΓ⊢M:0Γ⊢initial(M):A\frac{\Gamma \vdash M \colon 0}{\Gamma \vdash initial (M) \colon A} 从种属的观点来看,方程式 initial(M1)=initial(M2)initial(M1)=initial(M2)initial (M_1) = initial(M_2)是显而易见的(当类型有意义时)。 但是,从这个角度来看,我还可以推断出,当M,M′:0M,M′:0M,M' \colon 0,:M=M′M=M′M = M'。这种推论似乎更强,尽管显示它的特定模型使我难以理解。 (尽管我有一些证明理论上的直觉:您使用哪种矛盾来获得居民并不重要,但是可能会有不同的矛盾证明。) 所以我的问题是: 零类型的标准方程式是什么? 它们中的任何一个被归类为ηη\eta或ββ\beta定律吗?

3
没有手动内存管理或运行时垃圾回收的基于类型的内存安全性?
假设我们想要一种有类型的,纯函数式的编程语言,例如Haskell或Idris,其目标是没有垃圾回收且没有运行时(或至少不超过C和Rust“运行时”)的系统编程。某种或多或少可以在裸机上运行的东西。 不需要手动内存管理或运行时垃圾回收的静态内存安全选项有哪些?使用类似于Haskell或Idris的纯函数类型系统如何解决该问题?

2
Alternative,MonadPlus(LeftCatch)和MonadPlus(LeftDistributive)之间有什么关系?
跟进什么是替代而不是MonadPlus的Monad示例?: 假设是单子。什么是关系betweem 米是一个另类,一个MonadPlusCatch和MonadPlusDistr?mmmmmm对于六种可能的组合中的每一种,我都希望有一个证据表明一个隐含着另一个,或者有一个反例却没有。 (我在用着 MonadPlusCatch用来区分满足Left-Catch规则的MonadPlus: mplus (return a) b = return a MonadPlusDistr区分MonadPlus是satifies 左分配规则: mplus a b >>= k = mplus (a >>= k) (b >>= k) 请参阅HaskellWiki上的MonadPlus。) 我目前的知识和直觉是: MonadPlusDist 替代 - 可能是正确的 - 似乎很简单,我相信我有一个证明的草图,我将对其进行检查,如果它是正确的,我会将其张贴在 AndrewC回答的这一部分。→→\rightarrow →→\rightarrow Maybe →→\rightarrow MaybeT (Either e)MaybeT m' ((pure x) <|> g) <*> a = …


2
是否对各种编程语言功能的语义进行了调查?
是否对各种编程语言功能的语义进行了调查(包括论文,书籍章节,教程,链接等)?我最初对这里http://www.digitalmars.com/d/2.0/comparison.html中D的功能不知所措 我想看看我可以从这里得到什么,尽管我对stackoverflow提出了类似的问题,并且理解这两个站点有不同的观点。 非常感谢您的回复!感谢Dave Clarke 对meta的建议!


1
最小正常Lambda项不是最快的示例
让的被定义如下组术语:λŝ 我žËs一世žËsizeλλ\lambda ŝ 我že (x )= 1s一世žË(X)=1个size(x) = 1, ŝ 我žÈ (λ X 。吨)= 小号我že (t )+ 1s一世žË(λX。Ť)=s一世žË(Ť)+1个size(λx.t) = size(t) + 1, ŝ 我že (t s )= s i ze (t )+ s i ze (s )+ 1s一世žË(Ťs)=s一世žË(Ť)+s一世žË(s)+1个size(t s) = size(t) + size(s) + 1。 令λλ\lambda项t的复杂度ŤŤt定义为从txŤXt x到其正常形式的并行beta减少的次数(使用Levy的最佳估算器)。 我正在寻找一个相同函数的两个正常 λλ\lambda -term …

1
相干空间什么时候会有回撤和推出?
\newcommand{\symp}{\Bumpeq} 集合X上的相干关系\ symp_X是自反对称关系。相干空间是一对(X,\ symp_X),并且在相干空间之间的态射f:X \ to Y是f \ subseteq X \ times Y的关系,使得对于(x,y)所有\ f和(x ',y')\在f中,≎ X≎X\symp_XXXX(X ,≎ X)(X,≎X)(X, \symp_X)f :X → Yf:X→Yf : X \to Y˚F ⊆ X × ÿf⊆X×Yf \subseteq X \times Y(X ,ÿ )∈ ˚F(x ,y)∈ ˚F(x,y) \in f(X ',ÿ ')∈ ˚F(x′,ÿ′)∈ ˚F(x',y') \in f 如果X ≎ X …

2
用Universe层次结构进行遗传替换
我已经读过有关用简单术语和类型替换简单Lambda演算和逻辑框架的遗传方法。 我想知道,在具有Universe层次结构的依存类型系统中,是否有任何世袭替代的示例?即,其中Ť[R ü è :小号Ë Ť0:SË Ť1个:SË Ť2True:Set0:Set1:Set2 True : Set_0 : Set_1:Set_2等。 我特别想知道如何在这样的系统中建立归纳措施。简单类型的版本在结构上减少了要替换的变量的类型。这不适用于从属类型,对于我所链接的LF,我使用相干类型的术语的简单类型擦除来对类型的形状进行归纳。 但是,擦除为简单类型不适用于Universe层次结构,因为如果您具有以下内容: F:(x :SË Ť1个)→ x → T[R ü èf:(x:Set1)→x→True f : (x : Set_1)\to x \to True表示 F ((y:Tř ü ë )→ Ťř ü È → Ťr u e ):Tř ü È → Ťř ü È …

5
用从使用到绑定的函数表示绑定变量
用语法表示绑定变量,尤其是避免捕获替换表示绑定变量的问题是众所周知的,并且有许多解决方案:具有alpha等价性的命名变量,de Bruijn索引,局部无名,名词集等。 但是似乎还有另一种相当明显的方法,尽管如此,我仍未在任何地方使用它。也就是说,在基本语法中,我们只有一个“变量”术语,写为,然后分别给出了一个函数,该函数将每个变量映射到其作用域内的绑定器。所以 -term like∙∙\bulletλλ\lambda λ ×。(λ ÿ。X ÿ)λX。(λÿ。Xÿ) \lambda x. (\lambda y. x y) 将被写为,该函数会将第一个映射到第一个,将第二个映射到第二个。因此,它有点像de Bruijn索引,只是在您评估一个函数来查找相应的联编程序时不必“计数 s”。(如果在实现中将其表示为数据结构,我会考虑为每个可变项对象配备一个指向相应绑定项对象的简单指针/引用。)λ 。(λ 。∙ ∙ )λ。(λ。∙∙)\lambda. (\lambda. \bullet\bullet)∙∙\bulletλλ\lambda∙∙\bulletλλ\lambdaλλ\lambda 显然,这对于在页面上编写语法以供人类阅读来说并不明智,但是de Bruijn索引也不是。在我看来,从数学上讲,它是完全有意义的,尤其是它使避免捕获的替换变得非常容易:只需替换您要替换的术语并采用绑定函数的并集即可。的确,它没有“自由变量”的概念,但是(再次)de Bruijn索引也没有。在任何一种情况下,包含自由变量的术语都表示为一个术语,其前面带有“上下文”联编程序列表。 我是否缺少某些内容,并且由于某种原因该表示不起作用?是否有问题使它比其他问题严重得多,因此不值得考虑?(我现在唯一能想到的问题是术语集(及其绑定功能)不是归纳定义的,但这似乎并不是无法克服的。)或者实际上是否有使用它的地方?


2
对基于条件逻辑的编程语言的引用
条件逻辑是使用与其他条件概念相对应的模态运算符(例如,因果条件读入“导致“ B”或概率条件“ ”,其读为“给定 ”)。A A | B A B一种□→ BA◻→BA\; \square\!\!\!\!\to B一种AAA|BA|BA|BAAABBB 通常,这些逻辑是从模型理论上进行研究的,但是我想知道它们在编程语言设计中的应用(例如,键入命令性动作)。 我希望能参考他们的证明理论(即,演算/自然演绎)或基于这些模态运算符的类型的编程语言。 谢谢! 编辑:《斯坦福哲学百科全书》对此主题进行了很好的介绍。

1
Escardó对PCF +超时的度量语义是否完全抽象?
MartínEscardó 在其1999年的研讨会论文“ PCF的度量模型”中指出,有可能在完整的超度量空间和非膨胀图的类别中对PCF进行简单的解释。 他证明了该模型是足够的,并且它可以对超时构造的添加进行建模(即,一个运算符,它将在有限数量的步骤中运行其参数,并且如果无法在其中终止则产生答案或发出错误信号时间限制)。然后他建议调查度量模型对于PCF +超时是否完全抽象是很自然的。 有没有人对此进行调查,如果是这样,答案是什么? PCF +超时是否实现与图灵机相同的功能,包括更高类型的功能? (顺便说一句,您如何在文本中添加重音符号?我从他的姓氏和姓氏中都删除了重音符号。编辑:姓名固定。我将其保留在括号内,以便继续对帖子发表评论感。)

3
对于什么语言,已经有了观察对等理论?
对于正确性证明,我正在寻找的程序等价的可用概念为Barendregt的清纯型系统(的PTS); 缺少足够的特定类型系统。我的目标只是使用概念,而不是出于自身的原因对其进行研究。≅≅\cong 这个概念应该是“ 伸展 ” -特别是要证明,应该足以证明牛逼1Ť1个≅Ť2t1≅t2t_1 \cong t_2表示适当类型的所有值 v。Ť1个v ≅Ť2vt1v≅t2vt_1\; v \cong t_2\; vvvv 指称等价 指称等价很容易满足所有正确的引理,但是任意PTS的指称语义似乎颇具挑战性-对于系统F来说似乎已经很困难。 上下文/观察等价 那么显然的替代方法是各种形式的上下文等效(如果没有基础上下文可以区分它们,则两个术语是等效的),但是其定义不能立即使用。各种引理并不是很容易证明的。是否已为PTS证明过?或者,该理论是“显而易见的扩展”,还是有理由相信该理论会明显不同? 编辑:我没有说什么很难。 简单的部分:定义 定义等效性并不难,并且在许多论文中都有定义(至少从Plotkin 1975对PCF的研究开始,如果不是更早的话-来源可能是1968年Morris的博士学位论文)。我们如果对所有地面上下文Ç,c ^ [ 吨1 ] ≃ Ç [ 吨2 ] -也就是说,c ^ [ 吨1 ]和c ^ [ 吨2 ]给出相同的结果Ť1个≅Ť2t1≅t2t_1 \cong t_2CCCC[ Ť1个] ≃ Ç[ Ť2]C[t1]≃C[t2]C[t_1] \simeq C[t_2]C[t1]C[t1]C[t_1]C[t2]C[t2]C[t_2]。你有几个选择,这里有很多的替代品:例如,在强正火的语言,如果你有土黄的地面类型,你可以说,地面环境是那些回报土黄,然后意味着一个和b取相同的数字。对于非终止,对于合理的语言,使用“ X终止”作为观察就足够了,因为如果两个程序在观察终止时是等效的,那么在观察结果时它们也是等效的。a≃ba≃ba \simeq …

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.