type-systems

    1热度

    4回答

    我在写一个ModulePass,我需要分析每个在给定模块中定义的结构。 我知道带名称的结构被插入到ValueSymbolTable中,但我怎样才能遍历所有其他结构(没有名称和文字结构标识)?

    22热度

    3回答

    我想理解逻辑编程语言(在我的情况下为Prolog)和Haskell的类型系统之间的关系。 我知道都使用统一和变数取决于关系找到的值(或类型,在Haskell的类型系统)。作为更好地理解它们之间的相似点和差异的练习,我尝试在Haskell的类型级别上重写一些简单的序言程序,但是我在某些部分遇到了问题。 首先,我改写了这个简单的Prolog程序: 为: class Numeral a where

    9热度

    2回答

    是否有可能强制在编译时传递给方法的Vector的大小?我想模拟使用,看起来像这样的空间中的点的集合,n维欧几里德空间(这是我现在有): case class EuclideanPoint(coordinates: Vector[Double]) { def distanceTo(desination: EuclieanPoint): Double = ??? } 如果我有一个通过E

    7热度

    1回答

    的不允许混鉴于: trait Foo trait Bar { this: Foo => } trait NoBar { this: Foo => } 有没有一种方式可以欺骗类型系统分为禁止: new Foo with Bar with NoBar {}

    25热度

    1回答

    如果要使用GHC的lexically scoped type variables,则还必须使用explicit universal quantification。也就是说,你必须forall声明添加到你的函数的类型签名: {-# LANGUAGE ExplicitForAll, ScopedTypeVariables #-} f :: forall a . [a] -> [a] -- The

    3热度

    1回答

    我有下面的类层次结构: trait Entity { type E <: Entity type S <: Something[E] def in: S } trait Something[E <: Entity] { def doSomething { // something } } class A extends Ent

    7热度

    1回答

    我试图设计一个本体,如可以使用OWL或主题地图定义,包括支持多态类型,如列表[T]其中T是一个Interval Kind In(Nothing,Any)的类型参数,List是函数种类* - > *。最终,我想用语义语言描述一个类型系统本体,它具有足够的细节和严密性,可以成为用相同语义语言编写的类型安全软件代码的基础。 考虑到这个目标,我试图找出Kinds的层次结构,其中Type,Interval

    3热度

    3回答

    为了好玩,我试图在Java中实现一个通用的Pair类。我无法用equals: public class Pair<A, B> { public final A _1; public final B _2; // ... unnecessary details left out ... public boolean equals(Pair<A, B> t

    7热度

    2回答

    斯卡拉的Ordering特质没有任何原因是不会逆转的吗?一个激励的例子如下。 假设我想执行一个有序插入。我可以具有功能与签名 def insert[A, B >: A](list: List[A], item: A)(implicit ord: Ordering[B]): List[A] 在这里,我有接受超级类型A类型的Ordering。我想这在你处理case classes时很有用。例如:

    13热度

    1回答

    如果一个类有一个convariant类型参数,如Iterable[+A],在那里宣布 def foo(bar: Iterable[_]) 和 def foo(bar: Iterable[Any]) 之间有什么区别? 如果类具有逆变类型参数如Growable[-A],有声明 def foo(bar: Growable[_]) 和 def foo(bar: Growable[Nothing