"The '代数' 表达式对于具有数学背景的人非常有启发性。让我试着解释一下我的意思。定义了基本类型,如乘积 '•',并集 '+',单例 'X' 和单位 '1'。我们可以使用缩写 'X²' 表示 'X•X',使用 '2X' 表示 'X+X' 等等,然后为链表等定义代数表达式。data List...
使用代数数据类型在 Haskell 中表示树或列表很容易。但是如何通过排版来表示图形呢?似乎你需要使用指针。我猜你可以这样做:type Nodetag = String type Neighbours = [Nodetag] data Node a = Node a Nodetag Neigh...
在Haskell中(主要是使用GHC),我如何找到存储某种数据类型的实际内存量?是否可以在运行时(例如在GHCi中)计算它,或者可以从组件估计复合数据类型的内存需求? 通常情况下,如果已知类型a和b的内存需求,那么代数数据类型的内存开销是多少,例如:data Uno = Uno a data...
如果我有一个看起来有点像这样的类型集合:type ValidValues = string | number | null type ValidTypes = "text" | "time" | "unknown" type Dec...
我正在尝试找到一个关于DataKinds扩展的解释,以便我从只读过Learn You a Haskell的情况下理解。是否有一个标准的来源可以让我用我所学的少量知识来理解? 编辑:例如documentation中所说: 通过-XDataKinds,GHC会自动将每个适当的数据类型提升为一种...
Kotlin有类似的判别式联合类型(求和类型)吗?如果有的话,这个(F#)的惯用Kotlin翻译是什么?type OrderMessage = | New of Id: int * Quantity: int | Cancel of Id: int let handleMes...
有没有办法在Java中定义一个和类型(sum type)?Java似乎天然支持直接的积类型(product types),我认为枚举可能允许它支持和类型,继承看起来也可以做到,但至少有一个情况我无法解决。 具体而言,和类型是一种类型,它可以恰好拥有一组不同类型中的一个,就像C中的带标签联合(t...
我正在尝试全面理解Haskell的所有概念。 代数数据类型与C#和Java中的泛型类型有哪些相似之处?它们又有何不同之处?它们究竟有什么代数意义呢? 我熟悉通用代数及其环和域,但对Haskell的类型如何工作只有一个模糊的概念。
William Cook的Fusings最近的一篇博客文章提到: 关键点在于 Ensō 中的结构是作为图形整体被看待的,而不是作为单个值或传统的总和与乘积数据结构。 他所指的传统总和与乘积数据结构是什么?