Scala 执行lambda演算每条边的唯一可能性的代码

Scala 执行lambda演算每条边的唯一可能性的代码,scala,language-agnostic,types,theory,lambda-calculus,Scala,Language Agnostic,Types,Theory,Lambda Calculus,我无法比维基百科更好地解释这个词: […]λ-立方体是一个框架,用于探索 Coquand的构造演算,从简单类型开始 lambda演算作为放置在原点的立方体的顶点 构造演算(高阶依赖型多态) (lambda演算)作为其完全相反的顶点。每个轴 多维数据集代表了一种新的抽象形式: 术语取决于类型或多态性。系统F,也称为二阶lambda演算,仅通过施加此属性即可获得 类型取决于类型或类型运算符。具有类型算子λω的简单型lambda演算是通过施加 这是我的财产。它与系统F结合,得到系统Fω 类型取决于术

我无法比维基百科更好地解释这个词:

[…]λ-立方体是一个框架,用于探索 Coquand的构造演算,从简单类型开始 lambda演算作为放置在原点的立方体的顶点 构造演算(高阶依赖型多态) (lambda演算)作为其完全相反的顶点。每个轴 多维数据集代表了一种新的抽象形式:

  • 术语取决于类型或多态性。系统F,也称为二阶lambda演算,仅通过施加此属性即可获得
  • 类型取决于类型或类型运算符。具有类型算子λω的简单型lambda演算是通过施加 这是我的财产。它与系统F结合,得到系统Fω
  • 类型取决于术语,或依赖类型。仅施加此属性即可产生λ∏,一种与LF密切相关的类型系统
所有八种计算都包括最基本的抽象形式,即术语 根据术语的不同,普通函数如简单类型的lambda 微积分。立方体中最丰富的微积分,三者兼而有之 抽象,是构造的演算。这八个结石都是结石 强规范化

是否有可能找到Java、Scala、Haskell、Agda、Coq等语言中的代码示例来进行每一次细化,如果没有这种细化,calculi将无法实现这些细化

是否有可能找到Java、Scala、Haskell、Agda、Coq等语言中的代码示例来进行每一次细化,如果没有这种细化,calculi将无法实现这些细化

这些语言并不直接对应于lambda多维数据集中的任何系统,但是我们仍然可以通过这些语言之间的差异来举例说明lambda多维数据集中的系统之间的差异。以下是一些例子:

  • Agda有依赖类型,但Haskell没有。因此,在Agda中,我们可以使用列表的长度参数化列表:

    data Nat : Set where
      zero : Nat
      succ : Nat -> Nat
    
    data Vec (A : Set) : Nat -> Set where
      empty : Vec zero
      cons : (n : Nat) -> A -> Vec n -> Vec (succ n)
    
    这在哈斯克尔是不可能的

  • Scala比Java更好地支持类型运算符。因此,在Scala中,我们可以在类型运算符上参数化类型:

    class Foo[T[_]] {
      val x: T[Int]
      val y: T[Double]
    }
    
    这在Java中是不可能的

  • Java1.5比Java1.4更好地支持多态性。因此,自Java 1.5以来,我们可以参数化类型上的方法:

    public static <A> A identity(A a) {
      return a;
    }
    
    公共静态A标识(A){
    返回a;
    }
    
    这在Java1.4中是不可能的


我认为这样的例子可以帮助理解lambda立方体,lambda立方体可以帮助理解这些例子。但这并不意味着这些例子涵盖了关于lambda多维数据集的所有知识,或者lambda多维数据集涵盖了这些语言之间的所有差异。

这可能更适合@Inuyasha,尽管它显然是关于计算机科学理论的,它还涉及到在编程语言中实际实现这一点。我不认为这是“计算机科学中的一个研究级问题”,因此不属于cstheory。所有这些变量都是强正规化的,因此不是图灵完全的。您建议的语言是图灵完整的,因此这将是一个有点像方钉/圆孔的任务,不是吗?@Gian:???这些语言在其类型系统中实现了上述改进的部分或部分。我希望看到使用这些可能性的代码。我认为您需要更精确地描述“不可能实现”。这些系统在很大程度上相互嵌入,因此它们不同的主要特性是可处理性和我们可以对这些语言中的术语进行的推理类型。我不确定这将如何映射到Java、Scala、Haskell等在这些属性方面又有所不同的语言。