345得票7回答
滥用代数数据类型的代数 - 为什么这样做有效?

"The '代数' 表达式对于具有数学背景的人非常有启发性。让我试着解释一下我的意思。定义了基本类型,如乘积 '•',并集 '+',单例 'X' 和单位 '1'。我们可以使用缩写 'X²' 表示 'X•X',使用 '2X' 表示 'X+X' 等等,然后为链表等定义代数表达式。data List...

133得票7回答
如何在Haskell中表示图形?

使用代数数据类型在 Haskell 中表示树或列表很容易。但是如何通过排版来表示图形呢?似乎你需要使用指针。我猜你可以这样做:type Nodetag = String type Neighbours = [Nodetag] data Node a = Node a Nodetag Neigh...

128得票2回答
Haskell数据类型的内存占用

在Haskell中(主要是使用GHC),我如何找到存储某种数据类型的实际内存量?是否可以在运行时(例如在GHCi中)计算它,或者可以从组件估计复合数据类型的内存需求? 通常情况下,如果已知类型a和b的内存需求,那么代数数据类型的内存开销是多少,例如:data Uno = Uno a data...

122得票2回答
如何查看一个Typescript类型的完整扩展合约?

如果我有一个看起来有点像这样的类型集合:type ValidValues = string | number | null type ValidTypes = "text" | "time" | "unknown" type Dec...

79得票2回答
Haskell的DataKinds扩展是什么?

我正在尝试找到一个关于DataKinds扩展的解释,以便我从只读过Learn You a Haskell的情况下理解。是否有一个标准的来源可以让我用我所学的少量知识来理解? 编辑:例如documentation中所说: 通过-XDataKinds,GHC会自动将每个适当的数据类型提升为一种...

70得票5回答
我如何在Python中定义代数数据类型?

我怎么在Python中(2或3)定义代数数据类型?

68得票4回答
Kotlin和区分联合类型(总和类型)

Kotlin有类似的判别式联合类型(求和类型)吗?如果有的话,这个(F#)的惯用Kotlin翻译是什么?type OrderMessage = | New of Id: int * Quantity: int | Cancel of Id: int let handleMes...

63得票7回答
Java标记联合/总和类型

有没有办法在Java中定义一个和类型(sum type)?Java似乎天然支持直接的积类型(product types),我认为枚举可能允许它支持和类型,继承看起来也可以做到,但至少有一个情况我无法解决。 具体而言,和类型是一种类型,它可以恰好拥有一组不同类型中的一个,就像C中的带标签联合(t...

63得票8回答
Haskell的代数数据类型

我正在尝试全面理解Haskell的所有概念。 代数数据类型与C#和Java中的泛型类型有哪些相似之处?它们又有何不同之处?它们究竟有什么代数意义呢? 我熟悉通用代数及其环和域,但对Haskell的类型如何工作只有一个模糊的概念。

52得票4回答
“和乘积”数据结构是什么?

William Cook的Fusings最近的一篇博客文章提到: 关键点在于 Ensō 中的结构是作为图形整体被看待的,而不是作为单个值或传统的总和与乘积数据结构。 他所指的传统总和与乘积数据结构是什么?