algebraic-data-types

    18熱度

    1回答

    以下F#程序的定義,它返回較小兩對錶示爲結構元組整數的函數,並且它需要1.4秒來運行: let [<EntryPoint>] main _ = let min a b : int = if a < b then a else b let min (struct(a1, b1)) (struct(a2, b2)) = struct(min a1 a2, min b1 b2)

    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 我很想做的是橫跨蘋果和橘子定義一個通用方法。所以我決定

    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) <

    1熱度

    1回答

    Wikipedia's list of programming languages with algebraic data types (ADTs)表明Rust確實有ADT,但我不確定我的解釋是否對Rust的原因是正確的。據我瞭解,說一個具有ADT的人都需要有: 值: 零(或無效) - !拉斯特) - 一個類型,就沒有得到價值。 一個(或單元) - ()在Rust中) - 一種獲得一個值的類型:(

    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]? 這是模式匹配需要嗎? 或者也許這是爲了更好的可讀性? 對我來說似乎是多餘的,因爲我沒有看到任何理由使用

    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 +