path-dependent-type相关内容
我只是在 Scala 中检查抽象类型,但出现错误 我尝试的示例: scala>类食品抽象类动物{类型 适用食品 草类扩展食物牛类扩展动物{类型合适的食物 = 草覆盖 def 吃(食物:草){}}定义类草定义类奶牛标度>类鱼扩展食物定义类鱼标度>val bessy:动物 = 新牛bessy:动物=牛@5c404da8标度>bessy.eat(新 bessy.SuitableFood)
..
我只是在 Scala 中检查抽象类型,但出现错误 我尝试的示例: scala>类食品抽象类动物{类型 适用食品 草类扩展食物牛类扩展动物{类型合适的食物 = 草覆盖 def 吃(食物:草){}}定义类草定义类奶牛标度>类鱼扩展食物定义类鱼标度>val bessy:动物 = 新牛bessy:动物=牛@5c404da8标度>bessy.eat(新 bessy.SuitableFood)
..
我一直认为上下文边界和隐式参数列表的行为完全相同,但显然不是. 在下面的示例中,我希望 summon1[Int] 和 summon2[Int] 返回相同的类型,但它们没有.我希望 summon2[Int] 返回一个依赖于路径的类型,但它给了我一个类型投影.为什么? 欢迎使用 Ammonite Repl 2.2.0 (Scala 2.13.3 Java 11.0.2)@特质 Foo[A] {
..
我正在尝试在如下方法中使用依赖于类型的类型类: @typeclass trait Identifiable[M] {K型定义识别(ID:M):K}对象可识别{type Aux[M, K0] = Identifiable[M] { type K = K0 }隐式 def identifiableTuple[K1, K2](隐含的a:可识别[K1],b:可识别[K2]): Identifiable.
..
如何设计返回路径相关类型的方法?在下面的例子中,我特意让 Vertex 成为依赖于 Tree 的路径,这样就禁止跨树混合顶点(这只是一个例子):> 特质树{特征顶点定义根:顶点def addChild(parent: Vertex): 顶点}trait TreeFactory { def make: Tree } 现在不能构造以下内容: def test(f: TreeFactory): (
..
我已经就这个话题提出了一些问题,但这次我想进行更笼统的讨论,因为在我看来 Scala 缺少一些非常重要的块. 考虑以下代码(从我的真实项目中简化), 特质世界{输入状态 一切看起来都是那么美好和数学化,但是 object SomeWorld extends World {...}new Algorithm(SomeWorld).process(SomeWorld.initialSta
..
主要修改以更好地反映我的意图: //这*必须*在团队之外类播放器班级团队(val p1:玩家,val p2:玩家){输入 P = ???//
..
我想采用这种模式: def accept[T](a: RList[T]) = truedef accept[T, V](a: RList[T], b: RList[V])(隐式 ev: a.S =:= b.S) = truedef accept[T, V, Q](a: RList[T], b: RList[V], c: RList[Q])(隐式 ev: aS =:= bS, ev2: bS =
..
我试图让 Scala 为来自单例类型的路径相关类型找到正确的类型. 首先,这里是示例的类型容器和一个实例: trait 容器 {X型def get(): X}val 容器 = 新容器 {类型 X = 字符串def get(): X = ""} 我可以在第一次尝试中看到字符串(所以我已经有了一个工作场景): class WithTypeParam[C 但是当没有类型参数时,这不再起作
..
启动 Scala 3 存在类型已删除原因之一是 存在类型与路径依赖类型在很大程度上重叠,所以拥有它们的收益相对较小. 鉴于“很大程度上",所以并非总是如此,我想知道是否可以提供一个具体的示例来演示如何将存在类型重写为路径依赖类型,以及一个无法进行此类替换的示例? 解决方案 假设 T 是我们要通过存在量词绑定的类型,并且 F[T] 是某种依赖于 T 的类型,所以 type A
..
我想将具有抽象类型的类型的值赋予一个类,然后使用它的路径相关类型.看下面的例子(使用 Scala 2.10.1): trait Foo {A型def makeA:Adef useA(a: A): 单位}对象测试{类 IntFoo 扩展 Foo {类型 A = 整数定义 makeA = 1def useA(a: Int) = println(a)}类 FooWrap(val a: Foo) {de
..
这是一个非常精简的版本: case class Brickwall[A](otherSide: A)特质 Monoman { def me(m: this.type): Unit }def test(m: Monoman): Unit = m.me(Brickwall(m).otherSide)->错误:类型不匹配;发现: Monoman要求:m.type 愚蠢的砖墙不让我通过.有什么想法可能
..
我正在阅读《Scala 编程》一书的第 20.7 节,我想知道为什么在编译这段代码时: class 食物类鱼扩展食物类草扩展食物抽象类动物{类型 适用食品 这段代码没有(其余代码和之前一样,只是最后一行有变化): bessy Eat(新草) 据我所知,Grass 的类型与 Cow.SuitableFood 相同. 另外,我还有一个关于这个例子的问题: 如果 bessy 是 A
..
我一直在研究路径依赖类型.我能找到的最好的描述是: 如果 L 是一个类型标签,那么 x.L 和 y.L 是相同的类型,如果 x 和 y 可以被证明是指同一个对象. 这有时不是人们所期望的子类型行为.我希望如果上例中的 L 确实相同,那么这足以使 x.L 和 y.L 相同. Scala 被设计成这样有什么特别的原因吗? 解决方案 可扩展Component Abstracti
..
假设我打算在scala程序中使用singleton/literal类型特性,这个特性在scala 2.12的shapeless库中提供(scala 2.13支持原生文字类型,但我们以shapeless为例) 在 shapeless 中,文字类型表示为 Witness 对象的路径相关的内部类型,可以从 Scala 文字/常量隐式转换: 导入 com.tribbloids.spike.Base
..
有路径依赖类型,我认为可以在 Scala 中表达 Epigram 或 Agda 等语言的几乎所有功能,但我想知道为什么 Scala 不支持 this 更明确地说它在其他领域(比如 DSL)做得很好?我缺少什么,比如“没有必要"? 解决方案 除了语法上的便利之外,单例类型、路径依赖类型和隐式值的组合意味着 Scala 对依赖类型的支持出奇地好,正如我所尝试的在 shapeless 中演示.
..
我听说 Scala 有依赖于路径的类型.这与内部类有关,但这实际上意味着什么,我为什么要关心? 解决方案 我最喜欢的例子: case class Board(length: Int, height: Int) {case class Coordinate(x: Int, y: Int) {要求(0 因此,Coordinate 的类型取决于实例化它的 Board 实例.有各种各样的事情
..
考虑以下简单的 Scala 实验: scala>特质 A {class C;val c:C}定义性状 A标度>对象 O1 扩展 A {val c=new C}定义对象 O1标度>对象 O2 扩展 A {val c=O1.c}:9: 错误:覆盖了 O2.C 类型的特征 A 中的值 c;值 c 具有不兼容的类型对象 O2 扩展 A {val c=O1.c} 根据 Scala 语言
..
这是由路径相关的类型引起的scala问题:考虑到我有一个家庭类型: 特征外部{案例类Inner(v:Int){val external = Outer.this}} 如果我想在 Outer 的实例未知时调用 Outer#Inner.copy(): def cp(src:Outer#Inner)= {src.copy()} 我会遇到编译错误.因为src.copy()的类型签名附加到其外
..
这是第1部分的后续问题:
..