algebraic-data-types

    0热度

    1回答

    我想构建这样的事情 type ('a, 'b) btree = Empty | Node of ('a, 'b) * ('a, 'b) btree * ('a, 'b) btree ,但它表示,约在第一个星号是语法错误。

    1热度

    1回答

    与方法丰富ADT我写的决定的基本代数数据类型如下 sealed trait Fruit {def name: String} case class Apple(name: String) extends Fruit case class Orange(name: String, color: String) extends Fruit 我很想做的是横跨苹果和橘子定义一个通用方法。所以我决定

    1热度

    1回答

    因此,我发现在打字稿中有一个技巧,通过将类型映射到键值对,然后使用keyof类型创建可以是地图中的任何值的类型,将对象类型转换为区分的联合。下面是一个简单的例子: type SourceType = { foo: number, bar: string }; type MapWithKey<T> = {[P in keyof T]: { key: P, value: T[

    0热度

    1回答

    我想下面这个简单的斯卡拉ADT在Haskell型号: sealed trait Value sealed trait Literal < Value case object Null extends Literal case class IntLiteral(value: Int) extends Literal case class Variable(name: String) <

    7热度

    1回答

    我怎样才能在Go表达一个类型,是“(字符串或其他类似的列表)名单”“(字符串或‘其他如切片’)的片”的类型?基本上,好ol'“树表示为无限的列表和作为值的东西(在这个例子中的字符串)的东西” 我正在寻找一个S表达式的最简单的可能表示(它本身就是最简单的AST),在Python中看起来像这样: sexp1 = ["+", "x", "y", ["*", "10", "myVal"]] sexp2

    0热度

    2回答

    的一部分我需要创建限制由keyof关键字列出,它们是特定类型的属性的TP1密钥的约束。当我使用builder.setMetadata方法,第一个参数不应该接受字符串“配置”作为有效值(应该接受的类型为Foo<something>foo和其他键)。我试图自己想出一个解决方案,但我有点失落,现在已经做了三个多小时。以下是工作代码: interface Foo<T> {}; class Test {

    1热度

    1回答

    Scala标准库包含Option类型。 选项类型本身是协变类型,这从它的声明sealed abstract class Option[+A]明显可见。 的问题是: 为什么它的构造Some也是协变 final case class Some[+A](x: A) extends Option[A]? 这是模式匹配需要吗? 或者也许这是为了更好的可读性? 对我来说似乎是多余的,因为我没有看到任何理由使用

    0热度

    1回答

    我在尝试CVC4的实验。 (set-option :produce-models true) (set-option :produce-assignments true) (set-logic QF_UFDT) (declare-datatypes() (Color (Red) (Black)) ) (declare-const x C) (declare-const y C

    2热度

    2回答

    比方说,我有以下特点 trait Named { def name: String } 和下面的代数数据类型 sealed trait Animal extends Named case object Dog extends Animal { override val name: String = "dog man" } case object Cat exte

    1热度

    1回答

    我已经给出了一个问题来计算人口(p0)上升或下降到一定数量的人(p)所需的年数(nbYear)if人口将增加/减少百分比(百分比)和额外的人(一年)。 public static int nbYear(int p0, double percent, int aug, int p) { int nbYear = 0; while(p0 < p){ p0 = p0 +